带符号数右移

来源:百度知道 编辑:UC知道 时间:2024/09/22 01:38:28
计算机中带符号数右移,当最高位为1时,次数为负.右移是为了保证除2结果还是负,将最高位补1.那么原最高位1怎么处理?向右移么?
谢谢ynus 的回答!
那么如果是1000 0010这个数右移一位后是1100 0001?我怎么感觉把-2除以2后变样了?
谢谢帮忙!

不是右移嘛,就是依次右移啊
比如原来的数是1010 0110B
右移1位后1101 0011B
看到了吧?最低位移出,然后各个位依次右移,最高位保持不变,还是1

1000 0010这个可不是-2啊,负数在计算机内部是以补码形式存放的
那么把1000 0010转换成原码就是1111 1110,也就是-126啊
右移以后还是补码,把1100 0001转换成原码就是1011 1111
也就是-63
这不正好是除以2的关系吗。
-2在计算机内的表示是1111 1110(补码),右移1位变成1111 1111,就是-1的补码

无须费神,使用SAR指令即可,专门用来做这个的。