22. 已知 x 和 y,用变形补码计算 x-y,同时指出结果是否溢出。

(1) x=11011,y=-11111

(2) x=10111,y=11011 

(3) x=11011,y=-10011

24. 已知 x 和 y,用变形补码计算 x+y,同时指出结果是否溢出。

(1)x=11011,y=00011
(2)x=11011,y=-10101
(3)x=-10110,y=-00001

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
int question = 0;
string fu(string str) {if (str[0] == '0') {str.replace(0, 2, "11");} else {str.replace(0, 2, "00");}return str;
}
string fanMa(string str) {for (int i = 2; i < str.length(); i++) {if (str[i] == '0') {str[i] = '1';} else {str[i] = '0';}}return str;
}
// 正数的原码反码补码都一样, 负数补码是反码+1
string buMa(string str) {if (str[0] == '1') {str = fanMa(str);int flag = 1; // 标记要进位1for (int i = str.length() - 1; i >= 0; i--) {if (str[i] == '0') {if (flag) {flag = 0;str[i] = '1';}} else if (str[i] == '1') {if (flag) {str[i] = '0';}}}}return str;
}
string minus1(string str) {// 相当于找到最后一个1变成0,最后一个1前的0都变成1int flag = -1;for (int i = str.length() - 1; i >= 0; i--) {if (str[i] == '0') {if (flag) {str[i] = '1';}} else if (str[i] == '1') {if (flag) {flag = 0;str[i] = '0';}}}return str;
}
// 从补码转到原码
string B2Y(string str) {string res;if (str[0] == str[1]) {if (str[0] == '0') {res = " +";res += str.substr(2);} else {res = " -";res += minus1(str.substr(2));res = fanMa(res);}} else {if (str[0] == '0') {res = "+";res += str.substr(1);} else {res = "-";res += minus1(str.substr(1));res = fanMa(res);}}return res;
}
void checkOverFlow(string str) {if (str.substr(0, 2) == "01") {cout << "正溢出" << endl;} else if (str.substr(0, 2) == "10") {cout << "负溢出" << endl;} else {cout << "未溢出" << endl;}
}
// 输入X和Y的原码, 计算结果
string Cal(string X, string Y, char oper = '+') {printf("\n(%d)\n", ++question);X = buMa(X);cout << "[X]补:   " << X << endl;if (oper == '-') {Y = fu(Y);}Y = buMa(Y);if (oper == '-') {cout << "[-Y]补:  " << Y << endl;} else {cout << "[Y]补:   " << Y << endl;}int flag = 0; // 标记是否要进位for (int i = X.length() - 1; i >= 0; i--) {int cur = X[i] - '0' + Y[i] - '0' + flag;if (cur > 1) {flag = 1;} else {flag = 0;}if (cur & 1) {X[i] = '1';} else {X[i] = '0';}}printf("------------------\n");cout << "[X" << oper << "Y]补: " << X << endl;cout << " X" << oper << "Y   : " << B2Y(X) << endl;checkOverFlow(X);return X;
}int main() {system("chcp 65001");cin.tie(0);cout.tie(0);// bitset<7> a(27);// string strX = a.to_string();Cal("0011011", "0000011");Cal("0011011", "1110101");Cal("0011011", "1110011", '-');return 0;
}

nt布置你马的那么多题目...

计算机组成原理变形补码计算相关推荐

  1. 计算机组成原理(分析计算题解析)内附填空,选择,解答题答案

    目录 关于计算机组成原理的填空,选择以及解答题 1. 2. 3. 1.所以首先将整数和小数部分转化成二进制 2.移动小数点 3.得到二进制存储格式 4. 5. 6. 7. 8. 9. 计算机组成原理( ...

  2. 计算机组成原理考试计算题,计算机组成原理常考计算题.doc

    文档介绍: 计算机组成原理常考计算题 1. 机器数字长为8位(含1位符号位),当X= -127 (十进制)时,其对应的二进制表示, (X)原表示,(X)反表示,(X)补表示,(X)移表示分别是多少? ...

  3. 【计算机组成原理】补码的加减运算方法

    补码加法 [x+y]补=[x]补+[y]补 符号位也当作数值计算,最高位产生的进位丢掉(操作就是mod2n+1 ) 补码减法 [X-Y]补 =[X]补 + [-Y]补 和补码加法几乎完全一样,唯一的不 ...

  4. 计算硬盘的计算机,[计算机组成原理]-磁盘容量计算,磁盘平均寻址时间计算和数据传输速率计算...

    文章目录 相关定义 轨道:磁盘的轨道是同心圆 记录密度:单位长度中存储的二进制信息量 磁道密度:沿着磁盘半径的每单位长度的磁道数(tpi为tpm) 轨道距离:两条相邻轨道的中心线之间的距离成为轨道距离 ...

  5. 计算机组成mod2是什么意思,计算机组成原理常见概念计算

    1.GPIO基本特性 GPIO即通用输入输出接口,可以看作是微控制器的控制的I/O引脚.通过这些GPIO引脚,微控制器可以实现和外部设备的通信. 以STM32F407ZG为例,它提供了9组GPIO端口 ...

  6. 计算机组成用变形补码运算,计算机组成原理补码加减法运算

    计算机组成原理补码加减法运算 (37页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 14.90 积分 补码加减法运算 2019年7月9日计算机组成原理 1 ...

  7. 计算机组成原理计算tag,计算机组成原理计算题

    <计算机组成原理计算题>由会员分享,可在线阅读,更多相关<计算机组成原理计算题(7页珍藏版)>请在人人文库网上搜索. 1.计算题:[第三章]交叉方式的片选方法,交叉方式的地址分 ...

  8. 计算机七个计算原理,计算机组成原理计算题(7页)-原创力文档

    计算题: [第三章] 交叉方式的片选方法,交叉方式的地址分配,交叉存取度的概念,交叉存储器的带宽的计算 多模块交叉存储器采用低位地址做偏选. 模块存取一个字的存储周期为T ,总线传送时间为 t ,存储 ...

  9. 计算机组成原理mgk换算,计算机组成原理十套卷(本科)计算题及答案

    四.计算题 1.已知x=10101100,y=11110011.求xVy=? xΛy=? x?y=? x?y=? 解:x V y=11111111 x Λy=10100000 x?y=01011111 ...

  10. 1010001b 1101110b怎么用计算机,计算机组成原理计算题

    计算题: [第三章] 交叉方式的片选方法,交叉方式的地址分配,交叉存取度的概念,交叉存储器的带宽的计算多模块交叉存储器采用低位地址做偏选. 模块存取一个字的存储周期为T ,总线传送时间为t ,存储器的 ...

最新文章

  1. Ovirt 安装部署方法
  2. mysql 条件分析_数据分析之mysql
  3. Java实现redis管道
  4. java标签组件命名_java编程规范之java命名规范
  5. 支付宝接口调试经验总结
  6. 官方版WIN10PE如何添加explorer?
  7. 惊艳的成长计划表刷屏!武大首位 94 年博士入职华为,年薪达 201 万
  8. 有道云笔记分享_写完笔记后干啥 有道云笔记分享技巧
  9. 【iOS开发】—— 调用相机、相册
  10. 初步分析CCLE和GDSC的数据——RNA表达矩阵
  11. 搜狗PR权重是什么?搜狗PR权重如何查询?
  12. nginx死循环解决办法
  13. 洛谷1373小a和uim之大逃离
  14. Qt的信号和槽是如何工作的
  15. S7 A7 K7 V7区别
  16. 【C语言】求一个字符串的长度,不要使用strlen()函数
  17. Keepalived+NFS+DRBD
  18. 计算机毕业设计Java学生考勤管理系统(源码+系统+mysql数据库+lw文档
  19. 纯电动汽车整车控制器VCU
  20. 蘑菇街java面试题_【蘑菇街Java开发工程师面试的问题会有哪些?】-看准网

热门文章

  1. 大数据/人工智能实验室建设优势
  2. Autojs微信研究:微信自动发送信息机器人最终成品(有效果演示)
  3. 十大管理47个过程说明:含义,输入,输出,工具,解释
  4. 甲骨文裁员事件的思考
  5. 河南计算机对口升学题,河南省计算机对口升学专基模拟试题(四)[1]
  6. 基于 WebGL 3D 的 HTML5档案馆可视化管理系统
  7. coreldraw x4如何重叠图片_怎么用CDR x4(coreldraw x4)裁剪图片?x4怎么自动抠图
  8. web工程引用其他java工程_并读取spring配置文件_SpringBoot项目实战(8):四种读取properties文件的方式...
  9. 最全卡尔曼滤波原理简介
  10. 看图写英语作文关于计算机,终于懂了看图写英语作文模板