(一)数的进制
1)二进制(Binary,简称 B):用 0 和 1 表示
2)八进制(Octal,简称 O):用 0~7 表示
3)十进制(Decimal,简称 D):用 0~9 表示
4)十六进制(Hexadecimal,简称 H):用 0~9 和 A~F表示
补充:十六进制默认使用0x作为前导符
与C语言的流行有关。C语言变量名只能由数字、字母、下划线构成,且必须由字母开头。数字0适合作为前导符,八进制首字母O和数字0相似符合习惯,十六进制沿用此法,加字符x表示十六进制。
(二)原码、反码、补码
原码、反码和补码是3种二进制不同的表示形式,每个二进制数都有这三种形式。
(1)原码
将一个数的符号位和数值位分别表示。
最高位为符号位,0表示正,1表示负,其余位表示数值的绝对值。
1的二进制原码0000 0001,-1的二进制原码1000 0001
(2)反码
对二进制数逐位取反(0变1,1变0)。
正数的反码同其原码相同;负数的反码是其原码数值位逐位取反,符号位不变。
1的二进制反码0000 0001,-1的二进制反码1111 1110
(3)补码
对反码加1。广泛用于计算机系统中,它简化了加减法运算。
正数的原码、反码和补码相同。负数反码转补码,加1得到补码
-1的二进制补码1111 1111
(4)注意
● 在计算机内存中,数据都是以二进制补码形式存储和计算的。
● CPU只有加法器,没有减法器,计算减法时,是把减法转化为加法。
● 计算机中存储二进制数据,每1位二进制数据占用 1bit 的空间。
●二进制系统只使用两个符号(0和1),与硬件电路的设计非常匹配。
●查看某个二进制数的具体值,通常将其转换为原码(人类易读)
(三)十进制转换为二进制、八进制、十六进制
(1)十进制→二进制
转换原理:除2取余倒序输出
示例:9(十进制)→1001(二进制)
(2)八进制→二进制
转换原理:除8取余倒序输出
示例:796(十进制)→1434(八进制)
(3)十进制转十六进制
转换原理:除16取余倒序输出
示例:796(十进制)=31C(十六进制)
(4)小数部分转换(以十进制转二进制为例)
转换原理:整数部分除2取余,倒序输出;小数部分采用乘2取整,顺序输出
示例:78.6875(十进制)= 1001110.10110(二进制,且精确到小数点后5位)
小数部分:
0.6875x2=1.375→1
0.375x2=0.75→0
0.75x2=1.5→1
0.5x2=1.0→1
0.0x2=0.0→0
(四)二进制、八进制、十六进制转换为十进制
(1)二进制转十进制
1*23+0*22+1*21+1*20=8+0+2+1=11
(2)八进制转十进制
1*83+1*81+1*80=512+8+1=521
(3)十六进制转十进制
1*163+1*161+1*160=4096+16+1=4113
(4)小数部分(以八进制转十进制为例)
示例:72.45(八进制)= 58.578125(十进制)
7*81+2*80+4*8-1+5*8-2=56+2+0.5+0.078125=58.578125