原码与补码的转换

来源:互联网 发布:天猫魔盒直播软件 编辑:程序博客网 时间:2024/04/30 14:04
有符号数表示(以8 bit为例)

最高位为符号位,1表示负数,0表示正数。

计算规则:最高位为负权,其他位为正权

1111 1111B =  -1*2^7+1*2^6+1*2^5+1*2^4 +1*2^3+1*2^2+1*2^1+1*2^0 = -128+64+32+16 +8+4+2+1 = -1 (最大负数)

1000 0000B =  -128 (最小负数)

0111 1111B = 127 (最大正数)

0000 0000B = 0 (最小正数)


无符号数表示(以8 bit为例)

所有位为正权

1111 1111B = 128+64+32+16 +8+4+2+1 = 255 (最大数)

0000 0000B = 0 (最小数)


Java的int、long最大、最小值

static void t7(){int i32 = 0xffffffff;long i64 = 0xffffffffffffffffL;System.out.println("max -i32:\t"+i32);System.out.println("max -i64:\t"+i64);i32 = 0x80000000;i64 = 0x8000000000000000L;System.out.println("min -i32:\t"+i32);System.out.println("min -i64:\t"+i64);i32 = 0x7fffffff;i64 = 0x7fffffffffffffffL;System.out.println("max +i32:\t"+i32);System.out.println("max +i64:\t"+i64);i32 = 0x00000000;i64 = 0x0000000000000000L;System.out.println("min +i32:\t"+i32);System.out.println("min +i64:\t"+i64);}




原码与补码互转。

正数原码和补码相同。

负数原码转补码规则:原码的反码+1

Random rand = new Random();int i = -rand.nextInt(Integer.MAX_VALUE);System.out.println("原码:\t"+i);i = ~i+0x01;System.out.println("补码:\t"+i);i = ~i+0x01;System.out.println("原码:\t"+i);



原创粉丝点击