原码
最高位0表示正,1表示负,其余二进制位是该数字的绝对值的二进制位。如:-5的原码为10101
原码简单易懂,但加减运算复杂,存在加减乘除四种运算,增加了cpu的复杂度,零的表示不唯一
反码
正数的反码与其原码相同,负数的反码是对正数逐位取反,符号位保持为1
如:-5的反码为11010
反码运算不便,也没有在计算机中应用
补码
(1)已知十进制求二进制
求正整数的二进制 除2取余,直至商为零,余数倒叙排序
求负数的二进制 先求与该负数相对应的正整数的二进制代码,然后将所有位取反,末尾加1,不够位数时左边补1
求零的二进制 全是零
(2)已知二进制求十进制
如果首位是0,则表明是正整数,按普通方法求
如果首位是1,则表明是负整数,将所有位取反,再加一,所得数字就是该负数的绝对值
如果全是零,则对应的十进制也是零
Q : 一个int型的变量所能够存储的数据范围是多大?
int占4个字节,32位
int所能存储的最大值二进制表示:
0111 1111 1111 1111 1111 1111 1111 1111
用十六进制表示 : 0x7FFFFFFF
int所能存储的最小值二进制表示:
1000 0000 0000 0000 0000 0000 0000 0000
用十六进制表示 0x80000000
8位二进制所代表的的十进制示意图
二进制 | 十进制 |
---|---|
0000 0000 | 0 |
0000 0001 | 1 |
… | … |
0111 1111 | 127 |
1000 0000 | -128 |
1000 0001 | -127 |
1000 0010 | -126 |
… | … |
1111 1111 | -1 |