最近研究线程池的状态,竟是用二进制来表示状态的。
复习一下
1、正数
原码 是以数值的绝对值大小转换成二进制, 最高位补0,
反码、补码和原码相同。
比如: 正数int i=6,int类型的数占用4字节(32位-Integer.SIZE=32)
原码=0000 0000 0000 00000000 0000 0000 0110,
反码=0000 0000 0000 00000000 0000 0000 0110,
补码=0000 0000 0000 00000000 0000 0000 0110;
2、负数
原码 是以数值的绝对值大小转换成二进制, 最高位补1 .
反码 是对原码 除 符号位(最高位)外,各位取反(1变0,0变1).
补码 是对原码 除符号位(最高位)外 各位取反,最后一位加1.
比如 负数 int i=-6,
原码=1000 0000 0000 00000000 0000 0000 0110,
反码=1111 1111 1111 11111111 1111 1111 1001,
补码=1111 1111 1111 11111111 1111 1111 1010;(反码 +1)
参考博文:
/weixin_38296030/article/details/88353914