黑马程序员技术交流社区

标题: 关于二进制里面的高位与低位 [打印本页]

作者: 张伟    时间: 2012-1-5 16:48
标题: 关于二进制里面的高位与低位
移位运算符面向的运算对象也是二进制的“位”。可单独用它们处理整数类型(主类型的一种)。
左移位运算符(<<)能将运算符左边的运算对象向左移动运算符右侧指定的位数(在低位补0)。
“有符号”右移位运算符(>>)则将运算符左边的运算对象向右移动运算符右侧指定的位数。
“有符号”右移位运算符使用了“符号扩展”:若值为正,则在高位插入0;若值为负,
则在高位插入1。Java也添加了一种“无符号”右移位运算符(>>>),它使用了“零扩展”:无论正负,都在高位插入0。

哪位同学帮忙翻译一下,“高位补一”是什么意思,还有上面这段话。
作者: 魏志雷    时间: 2012-1-5 17:10
本帖最后由 魏志雷 于 2012-1-5 17:11 编辑

例如数字“-7”,二进制是:1111-1111 1111-1111 1111-1111 1111-1001现在-7>>3,那么意思就是“-7”的二进制数向右移3位
                                                                          丨
                                                                          丨
                          结果是:___1-1111 1111-1111 1111-1111 1111-1丨001,现在前面空出3位也就是高位空出3位,“高位补1”就是在空出的3位上面写上“1”,
                                                                          丨
                                                                          丨
                          结果是: 1111-1111 1111-1111 1111-1111 1111-1111
作者: 孙海亮    时间: 2012-1-5 17:16
你这上面不是说的很清楚么!带符号右移运算,若是正的高位补0,若是负饿高位补一。也就是移位的时候就是把十进制转换成二进制。然后再移位,若是正的话,右移后高位的补0。若是负数,那么它的二进制就是其正数二进制的反码,而它的最高为就是符号位。那么它右移后要保证它还是一个负数,就在它的高位补1.




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