用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。
参考资料:算术右移_百度百科
参考资料:补码_百度百科
那如果原来的数是奇数怎么办
本回答被网友采纳