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

java中关于<<,>>,>>>

2016-11-15 13:43 176 查看
1,在计算机中,数据都是以补码的形式存在的,

2,正数二进制数据的原码、反码、补码都是相同的,

如 5,java中,int占四个字节,所以它的原码、反码补码均为00000000 00000000 

00000000 00000101,首位0表示正数

举个例子,14的几个操作,

14>>2;分析14的原码、反码、补码为:00000000 00000000 00000000 00001110;

右移2位,高位补充符号位,此处符号位为0;所以结果为3

14>>>2;与上一个一样,只不过高位补充的是0,在这里结果也为3

14<<2:左移2位,低位补充0,可以得到结果为56

3,负数二进制数的原码、反码、补码基本不相同(-8的原码和补码是相同的)

如-5,原码为10000000 00000000 00000000 00000101,反码 11111111 11111111 

11111111 11111010,符号位不变,补码为11111111 11111111 11111111 11111011,在

反码的基础上加1。

4、几个基本的操作,-14的原码为100000000 00000000 00000000 00001110,反码为

11111111 11111111 11111111 11110001,补码为11111111 11111111 11111111 

11110010,

-14<<2;低位补充0,补码为11111111 11111111 11111111 11000100;所以反码为

11111111 11111111 11111111 1100011,原码为10000000 00000000 00000000 

0011100,也就是数字-56;

-14>>2;高位补充的是符号位,补码为11111111 11111111 11111111 11111100;

反码为11111111 11111111 11111111 11111011,原码为10000000 00000000 00000000 

00000100;所以结果为-4;

-14>>>2,高位补充的是0,补码为00111111 11111111 11111111 11111100;这是一个正

数,反码,补码,原码都是相同的,也就是数字1073741820。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: