语言:Java
位
位(bit)(比特)(Binary Digits):存放一位二进制数,0或者1
字节(B)(Byte):一个字节占8位。
位的基本操作
https://www.runoob.com/w3cnote/bit-operation.html 这篇教程介绍的比较详细了,这里不过多赘述
打印一个整数的32位
1 | /*打印一个整数的所有32位*/ |
特殊的,在 Java 中
1 | >> 带符号位右移 |
1 | int num = -5; |
但是如果仅仅是符号位+31位,对于 0 来说就会存在 +0 和 -0 的情况。
+0 = 0000 0000 0000 0000 0000 0000 0000 0000
-0 = 1000 0000 0000 0000 0000 0000 0000 0000
而且对于运算操作就要分两套逻辑进行,这样在运行时就会影响效率,为了避免这种情况,改变了负数的表示
负数 = 正数取反 + 1
0000 0000 0000 0000 0000 0000 0000 0101 (+5)
1111 1111 1111 1111 1111 1111 1111 1010 (~(+5))
1111 1111 1111 1111 1111 1111 1111 1011 (~(+5)+ 1)也就是 -5
其中,0和-2147483648取反加一等于自身,可以自己尝试