用8位补码表示整数-126的机器码,算数右移一位的结果是什么

如题所述

用8位补码表示整数-126的机器码,算数右移一位的结果是-63,过程如下:

首先-126转换成二进制,第一位为符号位;符号位保持不变,其他位取反得到反码;反码加1得到补码。结果如下:

原码:1111 1110

反码 : 1000 0001

补码:1000 0010

将补码算术右移一位,得到结果为新结果的补码;补码减一得到反码;反码符号位保持不变,其他位取反得到原码;则算术右移结果转换如下:

补码:1100 0001

反码:1100 0000

原码:1011 1111

转换成十进制结果为-(1*32+1*16+1*8+1*4+1*2+1*1)=-63

四位机器码的十进制和补码关系如下,

扩展资料

对于算术右移的结果,需要根据其最高位的符号位决定其移位结果,而逻辑右移则不需要考虑符号位。

以原题为例,1000 0010进行算术移位时,其最高位的符号位为1,每移一位需要对首位位补1,末位丢弃,即右移一位为1100 0001。而逻辑移位则不需要考虑符号位,首位补0,末位丢弃,逻辑右移一位结果为0100 0001,对空余位直接补0。

算术右移和补码的使用使得带符号数的右移结果与无符号数右移结果一致,即相当于除以2。

参考资料:算术右移_百度百科

参考资料:补码_百度百科

温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2018-02-26
  -126
  原码:1111 1110
  反码 : 1000 0001
  补码:1000 0010
  算数右移: 1100 0001
  再求其原码:1011 1111
  1011 1111(2)=-63(10)
  所以结果·为;-63
  【注】:
  右移,相当于除以2。而算术右移,它还能够保持符号不变.
原来是1,就在左边补上1,就能保证仍然是负数。
原来是0,就在左边补上0,就能保证仍然是正数。
因此,算术右移,适合于针对《有符号数》除以2。追问

那如果原来的数是奇数怎么办

本回答被网友采纳
第2个回答  推荐于2017-12-15
结果是正数65

-126表示为二进制为10000……10,因此右移一位是0100000000……1.就是65本回答被网友采纳
第3个回答  2016-01-10
整数一126的机器码即是:1,0111110
用八位补码表示为:1,1000010
因为这是一个负数,所以算术右移一位后符号位不变,在空位加一
所以移位后的结果是:1,1100001
对应的真值为:-193
自己看多一点习题就好了。不懂再问哈
相似回答