A:真值为负时,原码补码反码并不均相同!
B:真值为正时,原码即补码,表示形式相同。
原码:-127~127
反码:-127~127
补码:-128~127
在计算机中,所谓的机器字长一般是指寄存器的位数
编码机制的问题,有符号数如果对所有位进行编码,可以想象N位所编码的个数首先是是偶数,然后表示的数范围是对称的,也就是说0分为 0和-0,原码和补码正是这样,所以不可能在小数编码机制中出现-1这样一个整数,但是补码的特殊编码机制使0分到了正整数部分,也就是说原来的-0可以编码为另一个数,这个数就是-1。
在计算机中,以下选项属于小数点的表示方法的是定点表示。
第一位为1,说明是负数,由原码转反码的方法得,数值部分反转了,所以逆推得原码为1,0001。所以对应的真值是-1。
因为八位进制数的补码表示范围是-128~127,所以想表示-129至少要九位。
计算机的减法运算一般是根据模运算原理转化为与其补码的加法运算。所以是通过补码运算的二进制加法器。
在机器数补码中,零的表示形式是唯一的且全为零,也是因此匀出了位置给-1.
【-127】原=1,1111111
【-127】反=1,0000000
【-127】补=1,0000001
80H是十六进制的80,转为十进制是127,127转为二进制为10000000,即-127的反码。
正数的反码和补码都和原码相同。!!
逻辑移位时用0补位;
无符号数的移位称为逻辑移位;
有符号的移位称为算数移位。
DAH:H是十六进制的标志,所以数值是十六进制DA,转为二进制为11011010,又知,其为补码,所以对其进行算术左移移位,“高位舍去,低位补0”,得10110101,转为十六进制得B4,加上H后缀,得B4H;同理,对其进行算术右移移位,“低位舍去,高位补1”,得11101101,转为十六进制得ED,加上H后缀,得EDH。所以选A。
由只有正数+正数才会上溢,只有负数+负数才会下溢,进行推算,可得ABC正确。
A为正,所以A的补码即原码:0.1011;
B为负,所以B的原码为1.0101,反码为1.1010,补码为1.1011;
所以【A+B】补=1.0110
2MB=2*1024*1024bit。
即2*(2^10)*(2^10)=2^21;
目前我认为是这样子的,不保证正确性,如果有误,后面会来更改。
PS:这道题一定要注意大于还是大于等于/小于还是小于等于。就是要注意边界。
我的做法(不保证正确):老师还没批改,如果有误会回来重新编辑。
由题,9可以分为8+1,所以A的整数部分是0,0001001;
13可以分为8+4+1,所以B的整数部分是1,0001101;
因为A是正数,所以A的整数部分的补码即原码;
而B通过换算得其整数部分的补码为1,1110011;
所以整数部分补码【A+B】=1,1111011;
由溢出判断法一,Sa=0,Sb=1,S=1;所以V=SaSbS非+Sa非Sb非S=0,所以V=0,整数部分无溢出。
同理,64可以分为64,则A的小数部分是0.1000000;
32可以分为32,则B的小数部分是1.0100000;
因为A是正数,所以A的小数部分的补码即原码;
而B通过换算得其小数部分的补码为1.1100000;
所以小数部分补码【A+B】=0.0100000;
由溢出判断法一,Sa=0,Sb=1,S=0;所以V=SaSbS非+Sa非Sb非S=0,所以V=0,小数部分无溢出。
所以【A+B】补 不溢出
更新ing