关于有符号数移位的一篇帖子
请问有符号位的移位,最高位是否会被补1,从而成为负数? 比如signed int a = 320; a>>1=?
...
不会。 随着移位,正数不断填零,负数会不断的填1。
...
负数填1是保证 还是负数
正数填0 保证还是正数
...
给楼主一个建议,做位移之前,通通强制转换成无符号型的,这样结果就可控了……
...
移位 要看是什么数,和码制,这里整体讲一下: 一、逻辑移位(无符号数):不管原码、反码、补码,左移和右移一律补"0" 二、算术移位(有符号数): (1):真值为正数:不管原码、反码、补码,左移和右移一律补"0" (2):真值为负数:原码:补"0" 反码:补"1" 补码:左移补"0",右移补"1" 可以参考唐硕飞的计算机组成原理。
...
一般处理器都区分算术右移和逻辑右移指令,倒是算术左移和逻辑左移功能是一样的,有可能将一个负数左移成正数
bbs.csdn.net/topics/320218025
posted on 2013-05-25 17:17 weiweishuo 阅读(744) 评论(0) 编辑 收藏 举报