A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 张伟 黑马帝   /  2012-1-5 16:48  /  10125 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

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

哪位同学帮忙翻译一下,“高位补一”是什么意思,还有上面这段话。

2 个回复

倒序浏览
本帖最后由 魏志雷 于 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

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

回复 使用道具 举报
你这上面不是说的很清楚么!带符号右移运算,若是正的高位补0,若是负饿高位补一。也就是移位的时候就是把十进制转换成二进制。然后再移位,若是正的话,右移后高位的补0。若是负数,那么它的二进制就是其正数二进制的反码,而它的最高为就是符号位。那么它右移后要保证它还是一个负数,就在它的高位补1.

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马