目录
前言
进制转换是人们利用符号来计数的方法。进制转换由一组数码符号和两个基本因素“基数”与“位权”构成。
数位是指,数字符号在一个数中所处的位置。
基数是指,进位计数制中所采用的数码(数制中用来表示“量”的符号)的个数。
位权是指,进位制中每一固定位置对应的单位值。
注:1.数位从右开始数,第一位为0位
2.几进制,基数就是多少
3.位权=基数的数位次方
一、二进制 十进制和十六进制
X进制 逢X进1

注:16进制就是逢16进1,但我们只有0~9这十个数字,所以我们用A,B,C,D,E,F这六个字母来分别表示10,11,12,13,14,15。字母不区分大小写

数制的计算

二、数制的转换
十进制--->二进制
对于整数部分,用被除数反复除以2,除第一次外,每次除以2均取前一次商的整数部分作被除数并依次记下每次的余数。另外,所得到的商的最后一位余数是所求二进制数的最高位。对于小数部分,采用连续乘以基数2,并依次取出的整数部分,直至结果的小数部分为0为止。故该法称“乘基取整法”。
十进制--->十六进制
10进制数转换成16进制的方法,和转换为2进制的方法类似,唯一变化:除数由2变成16。
同样是120,转换成16进制则为:120转换为16进制,结果为:78。
| 被除数 | 计算过程 | 商 | 余数 |
| 120 | 120/16 | 7 | 8 |
| 7 | 7/16 | 0 | 7 |
二进制--->十进制
二进制数转换为十进制数
二进制数第0位的权值是2的0次方,第1位的权值是2的1次方……
所以,设有一个二进制数:0110 0100,转换为10进制为:
下面是竖式:
0110 0100 换算成十进制
从右往左开始换算
第0位 0 * 20 = 0
第1位 0 * 21 = 0
第2位 1 * 22 = 4
第3位 0 * 23 = 0
第4位 0 * 24 = 0
第5位 1 * 25 = 32
第6位 1 * 26 = 64
第7位 0 * 27 = 0
公式:第N位2(N)
---------------------------
100
用横式计算为:
0 * 20 + 0 * 21 + 1 * 22 + 0 * 23 + 0 * 24 + 1 * 25 + 1* 26 + 0 * 27 = 100
除0以外的数字0次方都是1,但0乘以多少都是0,所以我们也可以直接跳过值为0的位:
1 * 22 + 1 * 25 +1*26 = 100
二进制--->十六进制
二进制和十六进制的互相转换比较重要。不过这二者的转换却不用计算,每个C,C++程序员都能做到看见二进制数,直接就能转换为十六进制数,反之亦然。
我们也一样,只要学完这一小节,就能做到。
首先我们来看一个二进制数:1111,它是多少呢?
你可能还要这样计算:1 * 20 + 1 * 21 + 1 * 22 + 1 * 23 = 1 * 1 + 1 * 2 + 1 * 4 + 1 * 8 = 15。
然而,由于1111才4位,所以我们必须直接记住它每一位的权值,并且是从高位往低位记,:8、4、2、1。即,最高位的权值为23 = 8,然后依次是 22 = 4,21=2, 20 = 1。
记住8421,对于任意一个4位的二进制数,我们都可以很快算出它对应的10进制值。
下面列出四位二进制数xxxx 所有可能的值(中间略过部分)
| 仅四位的二进制数 | 快速计算方法 | 十进制值 | 十六进制值 |
| 1111 | 8+4+2+1 | 15 | F |
| 1110 | 8+4+2+0 | 14 | E |
| 1101 | 8+4+0+1 | 13 | D |
| 1100 | 8+4+0+0 | 12 | C |
| 1011 | 8+0+2+1 | 11 | B |
| 1010 | 8+0+2+0 | 10 | A |
| 1001 | 8+0+0+1 | 9 | 9 |
| …… | |||
| 0001 | 0+0+0+1 | 1 | 1 |
| 0000 | 0+0+0+0 | 0 | 0 |
二进制数要转换为十六进制,就是以4位一段,分别转换为十六进制。
如:
| 二进制数 | 1111 1101 | 1010 0101 | 1001 1011 |
| 对应的十六进制数 | FD | A5 | 9B |
十六进制--->二进制
反过来,当我们看到 FD时,如何迅速将它转换为二进制数呢?
先转换F:
看到F,我们需知道它是15(可能你还不熟悉A~F这六个数),然后15如何用8421凑呢?应该是8 + 4 + 2 + 1,所以四位全为1 :1111。
接着转换 D:
看到D,知道它是13,13如何用8421凑呢?应该是:8 + 4 + 1,即:1101。
所以,FD转换为二进制数,为: 1111 1101
由于十六进制转换成二进制相当直接,所以,我们需要将一个十进制数转换成2进制数时,也可以先转换成16进制,然后再转换成2进制。
比如,十进制数 1234转换成二制数,如果要一直除以2,直接得到2进制数,需要计算较多次数。所以我们可以先除以16,得到16进制数:
| 被除数 | 计算过程 | 商 | 余数 |
| 1234 | 1234/16 | 77 | 2 |
| 77 | 77/16 | 4 | 13(D) |
| 4 | 4/16 | 0 | 4 |
结果16进制为: 0x4D2
然后我们可直接写出0x4D2的二进制形式: 0100 1101 0010。
十六进制--->十进制
16进制就是逢16进1,但我们只有0~9这十个数字,所以我们用A,B,C,D,E,F这六个字母来分别表示10,11,12,13,14,15。字母不区分大小写。
十六进制数的第0位的权值为16的0次方,第1位的权值为16的1次方,第2位的权值为16的2次方……
所以,在第N(N从0开始)位上,如果是是数 X (X 大于等于0,并且X小于等于 15,即:F)表示的大小为 X * 16的N次方。
假设有一个十六进数 2AF5, 那么如何换算成10进制呢?
用竖式计算:
2AF5换算成10进制:
第0位: 5 * 160 = 5
第1位: F * 161 = 240
第2位: A * 162 = 2560
第3位: 2 * 163 = 8192
-------------------------------------
10997
直接计算就是:
5 * 160 + F * 161 + A * 162 + 2 * 163 = 10997
二进制的优点

总结
熟记各个进制的位权值
十六进制与二进制之间的互转 牢记对照表
十进制转换二进制 十六进制 牢记整除取余 倒退回去两步骤,勤加练习!
本文介绍了进制转换的基础知识,包括二进制、十进制和十六进制的概念,以及它们之间的转换方法。通过举例详细解释了数制的计算和转换过程,强调了二进制的优点,并提供了转换技巧,帮助读者掌握不同进制间的转换技能。

1077

被折叠的 条评论
为什么被折叠?



