目录
1. 基础系统介绍
3.将十进制转换为其他十进制系统
4. 十六进制到其他十进制系统
5. 总结在
之前的博客中,我们解释了信息是如何存储在计算机中的,以及如何表示信息。不过,每个基础系统的转换只是一触即发,后来笔者仔细研究了基础系统转换的原理,发现颇有见地。因此,本博客将讨论基础转换。
身体:
1. 基础系统介绍
在我们讨论基本系统之前,我们先来看看数字系统的定义:用一组固定的数字和一组统一的规则来表示数字的方法称为数字系统。数字系统分为进位计数系统
和非进位计数系统。非进位计数系统的数字表示与其在数字中的位置无关,因此我们在这里不会过多介绍。
大小进
位计数系统的数字所表示的数字与其在数字中的位置有关,常见的有二进制、十进制和十六进制,这里我们只介绍这三个基数的转换。
进位计数系统的要素:
(1) :用于表示基数的元素。例如,二进制数的个数为:0,1。十进制数为:0、1、2、3、4、5、6、7、8、9。 十六进制数为:0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F
(2)基数:数字的数量。例如,二进制数的底数是 2。十进制数的基数为 10。十六进制数的底数是 16
(3)比特权重:数字系统中每个固定位置对应的单位值称为比特权重。例如,十进制的第 2 位数字的位权重为 10,第 3 位数字的位权重为 100;二进制第2位的位权重为2,第3位的位权重为4,对于N基数,整数部分第i位的位权重为N^(i-1),小数部分第j位的位权重为N^-j。
那么我们可以说:每个数字所代表的值=数字的值*仓位的仓位权重。以上内容可以总结为下图:
例如,十进制数:(123.45) 10 = 1×102 + 2× 101 + 3×100 + 4× 10-1 + 5×10-2
二进制数:(1010)2 = 升× 23+0 ×
22+升× 21+0 × 20=(10)10
十六进制数:(BAD)16 = 11× 162+10×161+13×160=(2989)10
2. 二进制转换为其他碱基(
1)、二进制()->十进制()。
小技巧:以小数点为界,从最后一位数字(从右到左)开始计算整位数字,并列为0、1、2、3.........n,然后将第n位数字(0或1)乘以2的n-1幂,再加起来得到整数位的十进制数;小数位从左到右数,列为 1、2、3........n,然后乘以 n 位(0 或 1)等于 2 的 -n 次幂,然后相加得到十进制数(通过权重加法)。
示例:将二进制数 (10.10101)2 转换为十进制数。(
10.10101)2=(1x21+0x20+1x2-1+0x2-2+1x2-3+0x2-4+1x2-5)10=(2+0+0.5+0+0.125+0+0.03125)10=(2.65625)10(2) 二进制 (
) - >十六进制 (Hex)。
技巧:因为每四个二进制数字对应一个十六进制数,所以以小数点为边界,整数位从右到左从右到左分隔,少于4位数字用0填入左边;小数位由二进制数从左到右每 4 位数字分隔,小于 4 位的右边用 0 填充。
示例:将二进制数 (10.10101)2 转换为十六进制数。(10.10101)2=(
0010.1010 1000)2=(2.答8)16
3.将十进制转换为其他十进制系统(
1)、十进制()->二进制()。
诀窍:以小数点为界,将整数部分除以2,然后取每次得到的商和余数,继续用商除以2,直到商小于2。然后把第一次得到的余数作为二进制的单位位数,第二次得到的余数作为二进制的十位数字,以此类推,最后一次得到的商小于2就是二进制的最高位数,这样商+余数组成的数字就是转换后的二进制的值(整数部分除以2取剩余部分);先将小数部分乘以2,然后得到结果的整数部分,结果的小数部分再次乘以2,直到小数部分为零。然后将第一个整数部分用作二进制小数位的最高位数,随后的整数部分依次用作下位数字,这样每个整数部分组成的数字就是转换后的二进制小数的值(小数部分四舍五入乘以 2)。
需要注意的是,有些小数点不能用二进制准确表示,所以转换可以达到一定的精度,这也是计算机的浮点运算不准确的原因。
示例 1:将十进制数 (93) 10 转换为二进制数。
93/2=46..........1
46/2=23..........0
23/2=11..........1
11/2=5............1
5/2=2............... 1
2/2=1............... 0(
93)10=()2
示例 2:将十进制数 (0.3125) 10 转换为二进制数。
0. = 0 . 625
0.625x2 = 1 .25
0.25x2 = 0.5
0.5x2 = 1 .0(
0.3125)10=(0.0101)2(
2)、十进制()->十六进制(Hex)。
提示:该方法类似于将十进制转换为二进制。以小数点为界,将整数部分除以16,然后取每次得到的商和余数,继续用商除以16,直到商小于16。然后把第一次得到的余数作为十六进制的单位位数,第二次得到的余数取十六进制的十位数字,以此类推,最后一次得到的商小于16,就是十六进制的最高位数, 因此,由商+余数组成的数字是转换后的十六进制系统的值(整数部分除以16取余数);先将小数部分乘以16,然后得到结果的整数部分,结果的小数部分再次乘以16,直到小数部分为零。然后以第一个整数部分作为十六进制系统的最高位数,随后的整数部分依次作为下位,这样每个整数部分组成的数字就是转换后的十六进制小数的值(小数部分四舍五入乘以16)。
示例 1:将十进制数 (93)10 转换为十六进制数。
93/16=5............ 13(D)(
93)10=(5D)16
示例 2:将十进制数 (0.3125) 10 转换为十六进制数。
0. = 5 .0(
0.3125)10=(0.5)16
4. 十六进制到其他十进制系统(
1)、十六进制(Hex)->二进制()。技巧:将十六进制转换为二进制
与将二进制转换为十六进制相反。每个十六进制数对应一个四位二进制数
示例 1:将十六进制数 (A7) 16 转换为二进制数。(
A7)16=(A 7)16=(1010 0111)2=()2
示例 2:替换十六进制数 (0.D4) 16 到二进制数。
(0.D4)16=(0.D 4)16=(0.1101 0100)2=(0.)2(
2)、十六进制(Hex)——>十进制()。
提示:该方法类似于将二进制转换为十进制。小数点为边界,整数位数从最后一位数字(从右到左)开始计数,并依次列为 0、1、2 和 3.........n,然后将第n位数字(0-9,A-F)乘以n-1的16次方,再加得到整数位的十进制数;小数位数从左到右数,列为 1st、2nd、3........n,然后乘以 n 位数字 (0-9, A-F) 等于 16 的 -n 次方,再加法得到小数位的小数点后位数(按权重加法)。
示例 1:将十六进制数 (A7)16 转换为十进制数。(A7)16=(+7x160)10=(160+7)
10=(167)10
示例 2:替换十六进制数 (0.D4) 16 到十进制数。
(0.D4)16=(0+13x16-1+4x16-2)10=(0+0.8125+0.)10=(0.)10
5. 总结(1)
.转换其他十进制数:将二进制数和十六进制数的数字乘以它们各自底数的(N-1)次幂,它们的总和就是对应的十进制数,即按权重加法。
(2).十进制到十进制:将整数部分除以余数法,小数部分乘以整数,然后将整数和小数部分连接成一个数字,作为转换的最终结果。
(3).二进制到十六进制:从小数点开始,整数部分在左边,
小数部分在右边,每个四位二进制组用一个十六进制数表示,小于四位数字用 0 填充。
(4). 十六进制到二进制:每个十六进制对
应每个四位二进制,不足用 0 弥补。