1、首先明白任何一个整数在JAVA中二进制表达形式都是展现的补码,
正数的原码、反码、补码都是一致的
如int a = 12,b = -13;
int 类型占4个字节 32位表现形式如下:
用工具类Integer.toBinaryString()查看a,b在计算机中表达形式
a
原码:00000000 00000000 00000000 00001100
反码:00000000 00000000 00000000 00001100
补码:00000000 00000000 00000000 00001100
b
原码:11111111 11111111 11111111 1111 1101
反码:11111111 11111111 11111111 1111 0010
补码:11111111 11111111 11111111 1111 0011
~a 计算方式为(正数)
1、获取补码 :00000000 00000000 00000000 00001100
2、补码取反:11111111 11111111 11111111 1111 0011
3、反码减一:11111111 11111111 11111111 1111 0010
4、按位取反:11111111 11111111 11111111 1111 1101
~b计算方式为(负数),记为补码取反
1、获取源码:11111111 11111111 11111111 1111 1101
2、获取反码:11111111 11111111 11111111 1111 0010
反码加1
3、获取补码:11111111 11111111 11111111 1111 0011
4、按位取反:00000000 00000000 00000000 00001100
即:
~a结果为:-13;
~b结果为:-12;