负数的二进制、二进制转十六进制、Java中的运算符

目录

1 负数的二进制

1.1 正数

1.2 负数

2 二进制转十六进制

3 Java中的运算符

3.1 与运算符&

3.2 或运算符|

3.3 非运算符~

3.4 异或运算符^


1 负数的二进制

我们知道计算机只认识0和1,数字在计算机中就是以二进制表示的。这里提到三个概念:原码、反码和补码。数字的表示形式就是补码

1.1 正数

正数的原码、反码和补码都是一样的,比如int值5的的原码、反码和补码都是:

00000000 00000000 00000000 00000101

所以5在计算机中的表示也是00000000 00000000 00000000 00000101。

 

1.2 负数

先说3点概念:

  • 负数的原码:按照绝对值大小转换成的二进制数,然后最高位补1。
  • 负数的反码:原码除最高位,其余位取反。
  • 负数的补码:反码+1。

-5的原码为:  10000000 00000000 00000000 00000101。

-5的反码为:11111111 11111111 11111111 11111010。

-5的补码为:11111111 11111111 11111111 11111011。

补码11111111 11111111 11111111 11111011就是-5在计算机中的表示。

2 二进制转十六进制

四位二进制对应一位16进制,按顺序求就行。

负数的二进制、二进制转十六进制、Java中的运算符

3 Java中的运算符

一般用于二进制的运算。

3.1 与运算符&

双目云算符。两个位数中位都为1,结果才为1,否则结果为0。

3.2 或运算符|

双目云算符。两个位数中只要有一个为1,那么结果为1,否则结果为0.

3.3 非运算符~

单目云算符。所有位取反(0取1,1取0)。

3.4 异或运算符^

双目云算符。两个位数相同结果为0,不同结果为1。