JAVA取反运算

  • Post author:
  • Post category:java


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;



版权声明:本文为qq_31924779原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。