黑马程序员技术交流社区

标题: 负数的二进制左移后用什么补位?? [打印本页]

作者: 冯云飞    时间: 2013-1-11 03:05
标题: 负数的二进制左移后用什么补位??
1111-1111  1111-11111  1111-1111  1111-1010
这个数值是-6

当>>2 后,右移2位, 左边空位用1补齐。。。

但是,当<<2后。。 右边顶头的空位用什么补齐呢??  1 补 还是 0 补 ??

>>>   <<<   这个,无论左移右移,空位都是用0补是吗?
作者: 陈丽莉    时间: 2013-1-11 07:50
您这是一晚没睡还是起得特早啊。。 敬佩一下~
负数左移<<首位的1是不变的,末尾用0补齐
<<<和>>>都是无符号移位,无论正负数,都用0补齐。
作者: 詹卓锋    时间: 2013-1-11 08:17
没有<<<,
因为左移是在后面补0
而右移是在前面边补1或0,看最高位是0还是1,是0就补0,是1就补1.
决于数的前面的第一位是0还是1
所以右移是会产生到底补1还是0的问题。
而左移始终是在右边补,不会产生符号问题。
所以没有必要无符号左移<<<。
无符号左移<<<和左移<<是一样的概念。

QQ截图20130111081008.jpg (30.26 KB, 下载次数: 100)

负数的二进制

负数的二进制

QQ截图20130111080919.jpg (67.83 KB, 下载次数: 127)

位运算符

位运算符

作者: 詹卓锋    时间: 2013-1-11 08:25
1、但是,当<<2后。。 右边顶头的空位用什么补齐呢??  1 补 还是 0 补 ??    用0补
答案:1111-1111  1111-11111  1111-1111  1110-1000

2、>>>   <<<   这个,无论左移右移,空位都是用0补是吗?
答案:无论最高位是什么,右移后,都用0补齐
作者: 陈丽莉    时间: 2013-1-11 08:28
原来没有无符号左移啊。。  {:soso_e112:}
作者: 打工人    时间: 2013-1-11 11:34
陈丽莉 发表于 2013-1-11 08:28
原来没有无符号左移啊。。

无符号左移和左移是一样的额
作者: 陈丽莉    时间: 2013-1-11 16:18
那个啊。。 虽然我没弄清java中是没有无符号左移这有点小不足。
不过仍是简明扼要,抓住重点回答了问题了,也答对了呢。
不是说认真回答问题并有技术含量就可以的嘛。。。
看在我起了个大早回答问题的份上。。。  {:3_65:}
作者: 陈丽莉    时间: 2013-1-11 16:19
冯海霞 发表于 2013-1-11 11:34
无符号左移和左移是一样的额

那个啊。。 虽然我没弄清java中是没有无符号左移这有点小不足。
不过仍是简明扼要,抓住重点回答了问题了,也答对了呢。
不是说认真回答问题并有技术含量就可以的嘛。。。
看在我起了个大早回答问题的份上。。。  {:3_65:}




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2