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

来源:互联网 发布:阿里云域名接入备案 编辑:程序博客网 时间:2024/05/18 09:13

今天,突然想起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的补码;














0 0