计算机计数系统——进制转换

目录

十进制数

八进制整数

十六进制数

二进制数

二进制和十六进制


人们使用很多计数系统来表示数字。

有些计数系统(如罗马数字)并不适合用于算数运算;而印度技术系统经过改进,传入欧洲后变成了阿拉伯计数系统,这种数字方便了数学、科学和商业计算。

现代的计算机技术系统是基于占位符概念的,使用了最先出现在印度计数系统中的零。

虽然在日常生活中使用的是十进制,但计算领域通常使用八进制、十六进制和二进制。

十进制数

        数字的书写方式是基于10的幂数。例如,对于数字2468,2表示2个1000,4表示4个100,6表示6个10,8表示8个1。

        2468 = 2 x 1000 + 4 x 100 + 6 x 10 + 8 x 1

        一千是10x10x10或10的3次幂,用10³表示。使用这种表示法,可以这样书写上述关系:

        2468 = 2 x 10³ + 4 x 10² + 6 x 10¹ + 8 x 10º

        因为这种数字表示法是基于 10的幂,所以将它称作基数为10的表示法或十进制表示法。可以

用任何数作基数。例如,C++允许使用基数8(八进制)和基数16(十六进制)来书写整数(请注

意,10º为1,任何非零数的0次幂都为1)。

八进制整数

        八进制数是基于8的幂的,所以基数为8的表示法用数字0-7来书写数字。C++用前缀0来表示八进制表示法。也就是说,0177是一个八进制值。可以用8的幂来找到对应的十进制值:

八进制十进制
177= 1 x 8² + 7 x 8¹ + 7 x 8º
= 1 x 64 + 7 x 8 + 7 x 1
= 127


由于 UNIX 操作系统常使用八进制来表示值,因此 C++和C提供了八进制表示法。

十六进制数

        十六进制数是基于16的幂的。这意味着十六进制的10表示16+0,即16。为表示 9-16值,需要
其他一些数字,标准的十六进制表示法使用字母 a-f。C++接受这些字符的大写和小写版本,如下表所示。

十六进制数十进制值
a 或 A10
b 或 B11
c 或 C12
d 或 D13
e 或 E14
f 或 F15

        C++使用0x或 0X 来指示十六进制表示法。因此 0x2B3 是一个十六进制值,可使用 16 的幂来得到对应的十进制值。

十六进制十进制
0x2B3

= 2 x 16² + 11 x 16¹ + 3 x 16º

= 2 x 256 + 11 x 16 + 3 x 1
= 691

        硬件文档常使用十六进制来表示诸如内存单元和端口号等值。

二进制数

        不管是使用十进制、八进制,还是十六进制表示法来书写整数,计算机都将它存储为二进制值(即基数为 2)。二进制表示法只使用两个数字——0和1。例如,10011011就是二进制数。二进制数是基于2的幂。

二进制十进制
10011011= 1 x 2⁷ + 0 x 2⁶ + 0 x 2⁵ + 1 x 2⁴ + 1 x 2³ + 0 x 2² + 1 x 2¹ + 1 x 2º
= 128 + 0 + 0 + 16 + 8 + 0 + 2 + 1
= 155

        二进制表示法与计算机内存完全对应,在内存中,每个单元(位)都可以设置成开或关。只是将关表示为0,将开表示为1。内存通常是以字节为单位组织的,每个字节包含8位。字节中的位被编号,对应于相关的2的幂。这样,最右侧的位编号为0,然后是1,依此类推。例如,下图表示一个2字节的整数。

二进制和十六进制

        十六进制表示法常用于提供更为方便的二进制数据(如内存地址或存储位标记设置的整数)视图。这样做的原因是,每个十六进制位对应于4位。这种对应关系如下表所示。

十六进制数和对应的二进制数

十六进制位对应的二进制数
00000
10001
20010
30011
40100
50101
60110
70111
81000
91001
A1010
B1011
C1100
D1101
E1110
F1111

        要将十六进制值转换为二进制,只需将每个十六进制位替换为相应的二进制数即可。例如,十六进制0xA4 对应于二进制数10100100。同样,可以经松地将二进制值转换为十六进制,方法是将每4位转换为对应的十六进制位。例如,二进制值10010101将被转换为0x95。

  • 31
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值