- 编程卓越之道(卷1):深入理解计算机(第2版)
- (美)兰德尔·海德
- 638字
- 2023-12-06 18:13:41
2.2.5 八进制计数系统
在早期的计算机系统中,八进制(基数为8)表示形式很常见。即使是现在,这种表示形式还时常出现。八进制非常适合12位和36位(或为3的倍数的位数)的计算机系统,但不适合8位、16位、32位和64位(或其他为2的幂的位数)的计算机系统。尽管如此,一些编程语言仍然允许使用八进制表示形式,而一些较老的UNIX应用程序仍然还在使用八进制表示法。
1.编程语言的八进制数值表示
C语言(及C++和Java等衍生语言)、MASM、Swift和Visual Basic都支持八进制表示法。要能认出这些编程语言中的八进制数值。
●C语言在数字字符串前面加0(零)来表示八进制数。例如,0123等于十进制数值8310而不是12310。
●MASM使用后缀Q或q。(微软/英特尔选择Q可能是因为它看起来像字母O,不太可能和0弄混。)
●Swift使用前缀0o。例如,0o14代表十进制数值1210。
●Visual Basic使用前缀&O(字母O,不是0)。例如,&O123代表十进制值8310。
2.八进制和二进制表示形式之间的相互转换
二进制与八进制表示形式之间的转换与二进制与十六进制表示形式之间的转换类似,区别是按三位一组还是四位一组。二进制和相等的八进制表示形式见表2-2。
表2-2 二进制/八进制转换表

将八进制数值中的每个数字替换成表2-2中对应的三位二进制数字,就可以转换成二进制表示形式。例如,将123q 转换为二进制形式为%0_0101_0011:

将二进制字符串分成三位一组(位数不足则在左边补0),然后把每一组三位二进制数字替换成表2-2中对应的八进制数字,就得到了八进制数值。
要将八进制数值转换为十六进制,可以先将八进制数值转换为二进制,再将二进制数值转换为十六进制。