一个数在计算机中以二进制表示,叫做机器数。机器数是带符号的,在计算机中用一个数的最高位存放符号,正数为0,负数为1.
原码: 就是符号位加上其值的绝对值,即用第一位表示符号,其余位表示值。
反码: 正数的反码就是其本身。负数的反码是在其原码的基础上,符号位不变,其余各个位取反。
补码:正数的补码就是其本身。负数在反码的基础上+1;
基本数据类型byte 1个字节 8位 取值范围为-128~127;
基本数据类型int 4个字节 32位 取值范围为 -2^32/2~2^32/2-1;
如果130转为byte类型是多少?
1、130转为二进制为: 1 0 0 0 0 0 1 0;
2、因为130是int类型,所以在内存中表现的形式为:00000000 00000000 00000000 10000010
3、原码:1 0000010 原码变反码,最高位符号位不变,其他数值位1变0,0变1得反码
反码:1 1111101 反码变补码就是反码加1得
补码;1 1111110(第一位为符号位,0表示正数,1表示负数)
4、最终的看到的结果就是
1 1111110最高为是符号位不运算,数值为转化为十进制是64+32+16+8+4+2=126符号位负
所以为-126
即int类型的数值130强制转换为byte类型的值为-126。
在Win10下搜索计算器,在计算器中点击‘程序员’可以很方便地进行十六进制、十进制、八进制、二进制之间的转换。
快速计算原码的补码:原码的绝对值+补码的绝对值=256;如
原码为142 它的补码为-114;142+|-114|=256;