关于有符号数移位的一篇帖子

请问有符号位的移位,最高位是否会被补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  阅读(725)  评论(0编辑  收藏  举报

导航