您的位置:首页 > 编程语言 > Java开发

关于java的位运算符:<<与>>>

2016-11-04 16:25 169 查看
今天,突然想起java位运算符>>>的描述:用0填充最高位;>>:用符号位填充最高位。

于是乎有了这样的问题int a = -1;
int c = a>>>1;这时候c的值是多少呢?
当然不可能是0啦,答案是:

2147483647

原因是在计算机系统中,数值一律用补码表示和储存,这时候-1
= 1111 1111;

则 a = 11111111 11111111 11111111 11111111;

右移一位,最高位以0补齐,则 a = 01111111 11111111 11111111 11111111;

此时 a =2147483647。

此时再将 a 的值左移一位,则 a = 11111111 11111111 11111111 11111110;

刚好是-2的补码;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java 位运算