1.5.2 进制与数的运算

2025-06-17 14:51:31 更新

(一)数的进制

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.3751

0.375x2=0.750

0.75x2=1.51

0.5x2=1.01

0.0x2=0.00

(四)二进制、八进制、十六进制转换为十进制

(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