进制及其转换
创始人
2024-06-02 19:50:05
0

进制及其转换

前言

  说起进制,你有了解过嘛?你知道吗进制不仅是计算机基础中需要学习的一个重要部分,也是日常生活中随处可见的,比如生活中最常用的进制就是十进制,计算机底层使用的是二进制。本文就来带你了解一下什么是进制以及不同进制之间该如何转换。

P-1549646-800EE700

文章目录

  • 进制及其转换
  • 1、什么是进制
  • 2、重要概念
  • 3、进制间的相互转换
    • 3.1、R进制转十进制
    • 3.2、十进制转R进制
    • 3.3、二进制与八进制、十六进制的转换
      • 3.3.1、二进制与八进制的转换
      • 3.3.2、二进制与十六进制的转换

1、什么是进制

介绍

   从原始时代开始,其实就有了 “ 进制 ” 的存在,那时候原始人类为了维持日常生活,必须每天定时外出狩猎和采集果实保证自己的部落和妻儿有足够的食物,但世事无常,大肠包小肠。有时他们可能驮着大量的猎物或者食物满载而归,但有时又披着一身的伤痕回到部落一无所获。因此带回的食物有时是富余的,但有时却无法果腹。在一次次的经验教训中,这种数与量上的变化,慢慢产生了质变,使他们逐渐产生了 “ 数 ” 的概念,他们渐渐开始了解猎物的有与无、食物的多与少的差别,进而知道了一和多的区别,然后从无到有逐渐形成了数量的概念。

 

什么是进制

 

  在后续的生活中,他们想到了用小石子检查放牧归来的羊的只数;用结绳的方法统计猎物的个数;用在木头上刻道的方法记录捕鱼的数量这些计数的方法。这些原始的计数方法表明,其实人类很早就产生了数学的概念,并开始逐渐向高级文明慢慢靠拢。

 

结绳计数法

 

  综上所述,人们用来计数的方式或方法就称为进制,也称为数制。例如上图中原始人类使用的结绳计数法就是一种计数的方法。不过在概念上,我们通常会将进制分为两种类型,进位计进制非进位计进制。此外,现在用的最多就是进位计进制,所以一说到进制,如果没有特别指出,一般说的就是进位计进制

 

在计算机中通常包含以下四种常见的进制
  • Binary:二进制,例如 0101B,只有 0 和 1 两个数

  • Decimal:十进制,例如 102D (D通常可省略不写),数字0-9,共十位

  • Octal:八进制,例如 45O,数字从 0-7,共八位数字

  • Hexdecimal:十六进制,例如 34H,共有 1-9、A-F 这些数,其中 A-F 表示 10-15 这几个数

 

2、重要概念

  在进位计进制中有两个非常重要的概念,基数 (Radix) 和位权 (Weight) 。

  基数(Radix):R 进制中只允许出现 0, 1, 2, . . . , R-1 共 R 个数码,而 R 就称为 R 进制的基数。满 R 进 1,借 1 作 R。

  位权(Weight):R 进制中,不同位置的 1 所表示的值不同,位号为 i 的 1 表示 Ri。位号 i 的确定以小数点为基准,向左分别为 0, 1, 2, 3, . . . , 向右分别为 -1, -2, -3, . . . 。

 

3、进制间的相互转换

 

3.1、R进制转十进制

计算方法:按权展开法

  R 进制转十进制使用按权展开法,其具体操作方式为:将R进制数的每一位数值用 Rk 形式表示,即幂的底数是 R,指数为 k,k 与该位小数点之间的距离有关。当该位位于小数点左边,k 值是该位和小数点之间数码的个数,而当该位位于小数点右边,k 值是负值,其绝对值是该位和小数点之间数码的个数 +1,即:
(anan−1an−2...a1a0a−1a−2...a−m)R=an×Rn+an−1×Rn−1+an−2×Rn−2+...+a1×R1+a2×R2+...+am×Rm(a_na_{n-1}a_{n-2}\;. . .\;a_1a_0a_{-1}a_{-2}\;. . .\;a_{-m})\;R = a_n × R^n + a_{n-1}~ × R^{n-1} + a_{n-2} × R^{n-2} +\;. . .\;+ a_1 × R^1 + a_2 × R^2 +\;...\;+ a_m \times R^m(an​an−1​an−2​...a1​a0​a−1​a−2​...a−m​)R=an​×Rn+an−1​ ×Rn−1+an−2​×Rn−2+...+a1​×R1+a2​×R2+...+am​×Rm
其中 0≤ai≤R−10 \leq a_i \leq R-10≤ai​≤R−1,有一点要注意的是,RRR 进制中按权展开式的唯一性。

 

转换示例

运算规则:将 R 进制数 以 基数位权数 方式 展开

(1)、二进制转十进制

例1:(10100.01)2 转十进制数
(10100.01)2=1×24+0×23+1×22+0×21+0×20+0×2−1+1×2−2按权展开=1×24+1×22+1×2−2=16+4+14=20+0.25=(20.25)10\begin{align} (10100.01)_{2} & = 1 \times 2^{4} + \cancel{0 \times 2^{3}} + 1 \times 2^{2} + \cancel{0 \times 2^{1}} + \cancel{0 \times 2^{0}} + \cancel{0 \times 2^{-1}} + 1 \times 2^{-2} &\text{按权展开} \;\; \tag{1}\\ & = 1 \times 2^{4} + 1 \times 2^{2} + 1 \times 2^{-2} \tag{2}\\ & = 16 + 4 + \frac{1}{4} \tag{3} \\ & = 20 + 0.25 \tag{4} \\ & = (20.25)_{10} \tag{5} \end{align} (10100.01)2​​=1×24+0×23​+1×22+0×21​+0×20​+0×2−1​+1×2−2=1×24+1×22+1×2−2=16+4+41​=20+0.25=(20.25)10​​按权展开(1)(2)(3)(4)(5)​
其他示例:(1001.1)2 转十进制数、(10110110.11)2 转十进制数

二进制转十进制的示例


(2)、七进制转十进制

例1:(604.01)7 转十进制数
(604.01)7=6×72+0×71+4×70+0×7−1+1×7−2按权展开=6×72+4×70+1×7−2=294+4+149=298+0.0204081632653=298.0204081632653≈(298.02)10\begin{align} (604.01)_{7} & = 6 \times 7^{2} + \cancel{0 \times 7^{1}} + 4 \times 7^{0} + \cancel{0 \times 7^{-1}} + 1 \times 7^{-2} &\text{按权展开} \tag{1}\\ & = 6 \times 7^{2} + 4 \times 7^{0} + 1 \times 7^{-2} \tag{2}\\ & = 294 + 4 + \frac{1}{49} \tag{3}\\ & = 298 + 0.0204081632653 \tag{4}\\ & = 298.0204081632653 \approx (298.02)_{10} \tag{5} \end{align} (604.01)7​​=6×72+0×71​+4×70+0×7−1​+1×7−2=6×72+4×70+1×7−2=294+4+491​=298+0.0204081632653=298.0204081632653≈(298.02)10​​按权展开(1)(2)(3)(4)(5)​

 

Tips

  若在一个非零无符号二进制数后添加一个 0,形成的新数是原数的 2 倍。4 进制 4 倍;若在一个非零无符号二进制数后减去一个 0,形成的新数是原数的 12\frac{1}{2}21​ 倍。

 

3.2、十进制转R进制

计算方法:短除法
  1. 整数小数分开转换
  2. 整数除以 R 取余数,直到商 0 为止,反序书写。
  3. 小数乘以 R 取整(取整数部分),剩余的小数部分继续乘以 R 取整,反复如此直到小数部分为0,或者达到最大精度为止,正序书写。

特例:将 (332)10(\frac{3}{32})_{10}\\[2ex](323​)10​ 转换为二进制的数

方法一:(332)10=132+116=(0.00011)2(\frac{3}{32})_{10} = \frac{1}{32}+\frac{1}{16} = (0.00011)_{2}\\[2ex](323​)10​=321​+161​=(0.00011)2​

方法二:(332)10=3×2−5=(11)2×(0.00001)2=(0.00011)2(\frac{3}{32})_{10} = 3 \times 2^{-5} = (11)_{2} \times (0.00001)_{2} = (0.00011)_{2} \\[2ex](323​)10​=3×2−5=(11)2​×(0.00001)2​=(0.00011)2​

 

转换示例

(1)、十进制数转二进制

运算规则:将 十进制的整数作为 被除数,以二进制的基数 2 为 除数求余数 (反序书写),如果有小数部分则乘以 2 取整,直到小数部分等于 0 为止 (正序书写)。

例1:(121)10 转二进制数

(121)10=(1111001)2(121)_{10} = (1111001)_{2}(121)10​=(1111001)2​

十进制整数转二进制示例01

 

例2:(75)10 转二进制数

(75)10=(1001011)2(75)_{10} = (1001011)_{2}(75)10​=(1001011)2​

十进制整数转二进制示例02

例3:(255.86)10(255.86)_{10}(255.86)10​ 转二进制数

(255.86)10=(11111111.1101110000101000111101011100001010001111011)2(255.86)_{10} = (11111111.1101110000101000111101011100001010001111011)_{2}(255.86)10​=(11111111.1101110000101000111101011100001010001111011)2​

十进制小数转二进制示例01

从上面的示例中可以得出一个结论,一个十进制数不一定能精确转化为二进制。


(2)、十进制转八进制

例1:(284)10(284)_{10}(284)10​ 转八进制

(284)10=(434)8(284)_{10} = (434)_{8}(284)10​=(434)8​

十进制整数转八进制示例01

 


(3)、十进制转16进制

例1:(56)10(56)_{10}(56)10​ 转十六进制

(56)10=(38)16(56)_{10} = (38)_{16}(56)10​=(38)16​

十进制整数转十六进制示例01

例2:(351)10(351)_{10}(351)10​ 转十六进制

(351)10=(15F)16(351)_{10} = (15F)_{16}(351)10​=(15F)16​

十进制整数转十六进制示例02

 

3.3、二进制与八进制、十六进制的转换

 

3.3.1、二进制与八进制的转换

计算方法

以二进制转换为八进制为例,反之正好相反

  • 分组转换
  • 以小数点为基准,像左向右每三位二进制划分为一组,不足的在离小数点远的一端补 0,补足三位
  • 将每一组二进制数转换为对应的八进制数字,正序书写

 

二进制与八进制编码对应表

二进制八进制
0000
0011
0102
0113
1004
1015
1106
1117

 

转换示例

(1)、二进制转八进制

运算规则:二进制的整数部分,从右向左依次取3位,不足三位补左补 0;二进制的小数部分,从左向右依次取3位,不足 3 位右补 0。

例1:(10101111.010)2(10101111.010)_{2}(10101111.010)2​ 转八进制数

(10101111.010)2=(257.2)8(10\;101\;111.\;010)_{2} = (257.2)_{8}(10101111.010)2​=(257.2)8​

二进制转八进制的示例01


(2)、八进制转二进制

运算规则:将每位八进制,看作十进制数,再将十进制转二进制,保留三位二进制长度。

例1:(16.3)8(16.3)_{8}(16.3)8​ 转二进制数

(16.3)8=(1110.011)2(16.3)_{8} = (1\;110.\;011)_{2}(16.3)8​=(1110.011)2​

八进制转二进制的示例01

 

3.3.2、二进制与十六进制的转换

计算方法

以二进制转换为十六进制为例,反之正好相反

  • 分组转换
  • 以小数点为基准,像左向右每四位二进制划分为一组,不足的在离小数点远的一端补 0,补足四位
  • 将每一组二进制数转换为对应的十六进制数字,正序书写

 

二进制与十六进制编码对应表

二进制十六进制
00000
00011
00102
00113
01004
01015
01106
01117
10008
10019
1010A
1011B
1100C
1101D
1110E
1111F

 

转换示例

(1)、二进制转十六进制

运算规则:二进制的整数部分,从右向左依次取4位,不足4位左补零;二进制的小数部分,从左向右依次取4位,不足4位右补零

例1:(10101111.0100)2(10101111.0100)_{2}(10101111.0100)2​ 转十六进制

(10101111.0100)2=(AF.4)16(1010\;1111.\;0100)_{2} = (AF.4)_{16}(10101111.0100)2​=(AF.4)16​

二进制转十六进制的示例01

每 4 位二进制数刚好对应一个 16 进制的数字,因为 24 = 16。


(2)、十六进制转二进制

4 个二进制位数,对应 1 个十六进制位数

运算规则: 将每个十六进制,看作十进制数,再将十进制数转二进制,保留 4 位二进制数长度。

例1:(3AC.D)16(3AC.D)_{16}(3AC.D)16​ 转二进制

(3AC.D)16=(1110101100.1101)2(3AC.D)_{16} = (11\;1010\;1100.\;1101)_{2}(3AC.D)16​=(1110101100.1101)2​

十六进制转二进制的示例01

 

Tips

  • 八进制、十六进制与二进制的转换运算,全部以二进制作为 “ 中介 ”。

  • 计算机的底层通常会将表达式中的乘法 (或除法) 转化为加法和移位进行运算,例如:a×10=a×(8+2)=a×8+a×2=(a<<3)+(a<<1)a \times 10 = a \times (8 + 2) = a \times 8 + a \times 2 = (a<<3) + (a<<1)a×10=a×(8+2)=a×8+a×2=(a<<3)+(a<<1)

    因为纯乘法计算非常耗时,且加法和移位运算都非常快,通过这种转换可以有效地提高运算的速度。

  • 二进制数左移 K 位,相当于这个数乘以 2k2^{k}2k;二进制数右移 K 位,相当于这个数除以 2k2^{k}2k。

相关内容

热门资讯

开源证券给予昊华能源买入评级,... 开源证券05月07日发布研报称,给予昊华能源(601101.SH,最新价:7.2元)买入评级。评级理...
2024年西安莲湖区地区生产总... 莲湖区区委书记马翔“2024年我们坚持稳增长、促改革、优环境、惠民生、防风险,地区生产总值完成894...
科大讯飞:翻译机赋能国际交流 ... 投资者提问:董秘您好。甲亢哥的这次中国行之旅,备受国内国外关注。途中提到过贵司的翻译机很贵要3000...
国民技术新增质押926万股 质... 5月7日,国民技术公告,大股东孙迎彤将其持有的国民技术926.00万股股份进行质押,质押用途为质押贷...
盐城盐渎街道朱扣銮老人百岁生辰... 转自:扬子晚报5月3日,艳阳高照,春暖花开。这天上午10时许,在盐城市盐都区盐渎街道花吉村徐蓝群家庭...
广西一学校通报学生放假离校后失... 来源:广西右江民族商业学校微信公众号
模塑科技新增质押201.45万... 5月7日,模塑科技(维权)公告,控股股东江阴模塑集团有限公司(以下简称江阴模塑集团)将其持有的模塑科...
东吴证券给予福达股份买入评级,... 东吴证券05月07日发布研报称,给予福达股份(603166.SH,最新价:17.7元)买入评级。评级...
隆盛科技回购进展:已回购204... 隆盛科技于2024年11月27日召开第五届董事会第四次会议,2024年12月16日召开2024年第二...
四川省红十字博爱周暨无偿献血进... 转自:四川在线四川在线记者 任紫鑫5月7日,在第78个“世界红十字日”来临之际,由四川省红十字会、省...
Nethermind 与 Gö... 吴说获悉,Gökhan 及 Nethermind 宣布共同成立早期风险投资公司 Lantern Ca...
“伤不起”的总决赛G1,北京强... 转自:扬子晚报北京时间5月7日,2024-2025赛季CBA总决赛首场(G1)对决在浙江黄龙体育中心...
英集芯:5月7日召开董事会会议 英集芯(SH 688209,收盘价:19.16元)5月7日晚间发布公告称,公司第二届第十八次董事会会...
长华化学回购进展:已斥资182... 长华化学科技股份有限公司于2024年11月11日召开第三届董事会第十二次会议,审议通过回购公司股份方...
黄金跌破3380美元!机构提醒... 作 者丨唐婧 叶麦穗编 辑丨肖嘉 方海平 刘雪莹国际金价再度迎来大幅调整!北京时间5月7日晚,伦敦金...
*ST凯鑫:公司拟定于5月14... 上证报中国证券网讯 *ST凯鑫(维权)5月7日晚发布公告,为便于投资者能够进一步了解公司的生产经营等...
嘉元科技高管赖仕昌拟减持307... 5月7日,嘉元科技公告,非独立董事赖仕昌计划在2025年5月29日至2025年8月28日期间,通过大...
比依股份:公司于2025年1月... 每经AI快讯,有投资者在投资者互动平台提问:董秘您好,贵公司使用了多少资金投资“天数智芯”?比依股份...
拉脱维亚和立陶宛禁止武契奇乘机... 转自:北京日报客户端据塔斯社等俄媒报道,对于拉脱维亚和立陶宛禁止塞尔维亚总统武契奇乘飞机飞越其领空前...
涉案赌资逾16亿元,近300人... 转自:千龙网近日,由湖北省石首市检察院提起公诉的“7·05特大跨境网络开设赌场案”中的部分“员工”经...