数制

数制也称计数制,是用一组固定的符号和统一的规则来表示数值的方法。任何一个数制都包含如下基本概念:数码、基数、数位、位数、位权和计数单位。不同数制间可以进行进制转换。计算机中最常见的数制有二进制、八进制和十六进制数制,生活中最熟悉的则是十进制数制。当然,十进制数制在编写代码时,常用于表示数值大小。

以十进制数制为例,介绍数制的相关基本概念。

数码指数制中用于表示基本数值大小的不同数字符号。十进制有 10 个数码,分别为 0,1,2,3,4,5,6,7,8,9。
基数指数制所使用数码的个数。十进制的基数为 10。

数位指一个数中数码所占的位置。例如十进制整数 520,从右至左,0 的数位是个位、2的数位是十位,5 的数位是百位。

位数指的是数中数位的个数。例如十进制整数 520 有三个数位,所以位数为 3。

位权指的是数制中某一数位上的 1 所表示数值的大小(所处位置的权值)。例如,十进制整数 520,从右至左,0 的位权是 1,2 的位权是10,5 的位权是 100。

计数单位指的是数值中对位权的称谓。对于十进制整数 520,从右至左,0 的位权是 1,计数单位是个,2 的位权是 10,计数单位是十,5 的位权是100,计数单位是百,后面还有千、万、十万、百万、千万、亿、十亿、百亿、千亿……,这些都是计数单位。有了计数单位,我们就可以将 520 读作“五百二十”。计数单位与位权的区别在于,位权是对计算单位的量化,计数单位是对位权的表述。

生活中除了常用的十进制数制,也使用形形色色的进制。在新中国成立之前,重量单位一直采用的是半斤等于八两的换算,以前从两到斤,采用的是16 进制,16 两为 1 斤,那时候半斤和八两是同一个意思,所以有“半斤八两”这一成语。新中国成立之后,为与国际接轨又考虑使用习惯,将一斤改为 10 两,一公斤定为 1kg。时间上,使用 60 进制,每 60 秒为一分钟,每 60 分钟为 1 小时。从小时到天则使用 24 进制,每 24 小时为 1天。从天到星期,采用的是 7 进制,7 天为 1 星期,从月到年,采用的是12 进制,12 个月为 1 年,等等。

对于计算机而言,则使用二进制对数据进行表示,而不是人类使用的 10 进制。其理由主要有以下四点:
(1)电路简单。实现二进制存储和运算的逻辑电路比较简单,容易使用开关电路(或逻辑电路)来实现。
(2)可靠性高。2 进制只有 0 和 1 两个数码,数据的传送和处理都不容易出错。用电路实现 2 进制运算时,电路可靠,抗干扰能力强。
(3)运算简单。2进制的运算规则简单,不论加法规则还是乘法规则,都比较简单,从而简化实现运算规则的电路逻辑,提高运算速度。相对而言,10进制的运算规则要复杂很多,例如九九乘法表就是10进制的乘法规则。
(4)逻辑性强。逻辑代数中的值只有“真”和“假”,使用2进制十分容易表示逻辑值并实现逻辑运算。

在书写代码时,C++ 中不同进制的数值表示方法如下:

数制书写方式示例
二进制C++14 开始支持直接书写二进制数,数值前加 0b 或 0Buint8_t a = 0b00010001;
uint8_t a = 0B00010001;
八进制数值前加零uint8_t a = 021;
十进制直接书写uint8_t a = 17;
十六进制数值前加0x或0Xuint8_t a = 0x11;
uint8_t a = 0X11;

参考文献

[1] 数制.百度百科
[2] 数位.百度百科
[3] 数制与编码
[4] C++14.百度百科

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值