黑马程序员技术交流社区
标题:
关于二进制里面的高位与低位
[打印本页]
作者:
张伟
时间:
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