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。
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。