计算机中常用的进制.docx
《计算机中常用的进制.docx》由会员分享,可在线阅读,更多相关《计算机中常用的进制.docx(19页珍藏版)》请在冰豆网上搜索。
计算机中常用的进制
计算机中常用的进制
进制名称说明
十进制1)基数:
10
2)数码:
0、1、2、3、4、5、6、7、8、9
3)各数位的位权:
是以10为底的幂次方
4)进位方法:
逢十进一,借一当十
例如:
(3269.71)10
二进制1)基数:
2
2)数码:
0、1
3)各数位的位权:
是以2为底的幂次方
4)进位方法:
逢二进一,借一当二
例如:
(100110010)2
八进制1)基数:
8
2)数码:
0、1、2、3、4、5、6、7
3)各数位的位权:
是以8为底的幂次方
4)进位方法:
逢八进一,借一当八
例如:
(1075)8
十六进制
1)基数:
16
2)数码:
0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、A=10、B=11、C=12、D=13、E=14、F=15.
3)各数位的位权:
是以16为底的幂次方
4)进位方法:
逢十进一,借一当
例如:
(1C7)16
、各进位制数的表示方法
十进制二进制八进制十六进制十进制二进制八进制十六进制
000000091001119
100011110101012A
200102211101113B
300113312110014C
401004413110115D
501015514111016E
601106615111117F
701117716100002010
8100010817100012111
5、数制之间的转换
转换类型转换方法转换举例
其它进制的数转换为十进制的数按权展开二进制转换成十进制
八进制转换成十进制
十六进制转换成十进制
十进制数转换为其它进制的数整数部分:
除基数取余
十进制转换成二进制
十进制转换成八进制
小数部分:
乘基数取
十进制转换成十六进制
非十进制数之间的转换利用各种进位制对数的表示方法进行按位一一对应转换
说明
二、八进制之间的转换
二、十六进制之间的转换
八、十六进制之间的转换
①二进数制化为十进制
例1(1011011)2=1×26+0×25+1×24+1×23+0×22+1×21+1×20
=(91)10
例2二进制数(1101.101)2=(?
)10
(1101.101)2=1×23+1×22+0×21+1×20+1×2-1+1×2-2+0×2
=(13.625)10
所以(1101.101)2=(13.625)10
<<<>>>
②八进数制化为十进制
(136.75)8=1×82+3×81+6×80+7×8-1+5×8-2
=(94.953125)10
<<<>>>
③十六进数制化为十进制
(2D3.BC)16=2×162+13×161+3×160+11×16-1++12×16-2
=(723.734375)10
十进制化为二进制
整数部分:
除2取余
小数部分:
乘2取整
除2取余
乘2取整
十进制转换成八进制
整数部分:
除8取余
小数部分:
乘8取整
十进制转换成进制十六进制
整数部分:
除16取余
小数部分:
乘16取整
<<<
<<<
<<<
非十进制之间的转换方法
方法:
由于一位八进制数相当于三位二进制数,因此,要将八进制数转换成二进制数时,只要以小数为点界向左或向右每一位八进制数用相应的三位二进制数取代即可,如果不足三位,可用零补足。
反之,二进制转换成相应的八进制数只是上述方法的逆过程,即以小说数点为界,向左或向右每三位二进制数用相应的一位八进制数取代即可。
同理,十六进制与二进制互换,只要用四位二进制数取代一位十六进制数(逆过程一位十六进制数取代四位二进制数)即可,对于八进制与十六进制转换则要先将八进制(或十六进制)转换成二进制,然后应用前面的方法进行转换
<<<
二、八进制之间转换
①八进制转换成二进制
将(712.521)8转换成二进制数
712.521
111001010.101010001
(712.521)8=(111001010.101010001)2
②二进制转换成八进制
将(11101010.00101011)2转换成八进制数
011101010.001010110
352.126
(011101010.001010110)2=(352.126)8
<<<
二、十六进制之间的转化
③十六进制转换成二进制
将(1AC0.6D)16转换成二进制数
1AC0.6D
0001101011000000.01101101
(1AC0.6D)16=(0001101011000000.01101101)2
④二进制转换成十六进制
将(11101010.00101011)2转换成十六进制数
(11101010.00101011)2=EA.2BH
11101010.00101011
EA.2B
(11101010.00101011)2=EA.2BH
<<<
八、十六进制之间的转换
八、十六进制的数之间的转换要用二进制转换作过渡,即:
先将八进制(或十六进制)转换成二进制,再将二进制转换成十六进制(或八进制)。
例将(36074.75)8=(?
)16
八进制:
36074.65
二进制:
011110000111100110101
0011110000111100.11010100
十六进制:
3C3CD4
所以:
(36074.75)8=(3C3C.D4)16
根据二进制的原则“逢二进一”,我们把2的n次方列出分别是:
20=121=222=423=824=1625=3226=64……
“8421”法的原理说白了就是一种凑数法,按2的n次方的值列出,根据不同的情况进行“凑数”。
对于二进制转换成十进制数
例如:
二进制数1010转换成十进制数
8421
二进制数:
1010(结果为凡是1对应的数相加:
8+2=10)
例1:
110转换成十进制数
8421
110(结果为凡是1对应的数相加:
4+2=6)
例2:
11100转换成十进制数
168421
11100(结果为凡是1对应的数相加:
16+8+4=28)
(1)二进制转换为十进制
将每个二进制数按权展开后求和即可。
请看例题:
把二进制数(101.101)2=1*22+0*21+1*20+1*2-1+0*2-2+1*2-3=(5.625)10
二进制的1101转化成十进制
1101
(2)=1*2^0+0*2^1+1*2^2+1*2^3=1+0+4+8=13
转化成十进制要从右到左用二进制的每个数去乘以2的相应次方
不过次方要从0开始
相反用十进制的13除以2每除一下将余数就记在旁边
最后按余数从下向上排列就可得到1101
二进制转十进制,十进制转二进制的算法介绍
十进制转二进制:
用2辗转相除至结果为1
将余数和最后的1从下向上倒序写就是结果
例如:
302转化成二进制
302/2=151余0
151/2=75余1
75/2=37余1
37/2=18余1
18/2=9余0
9/2=4余1
4/2=2余0
2/2=1余0
故二进制为100101110
二进制转十进制
从最后一位开始算,依次列为第0、1、2...位第n位的数(0或1)乘以2的n次方得到的结果相加就是答案
例如:
01101011.转十进制:
第0位:
1乘2的0次方=1
1乘2的1次方=2
0乘2的2次方=0
1乘2的3次方=8
0乘2的4次方=0
1乘2的5次方=32
1乘2的6次方=64
0乘2的7次方=0
然后:
1+2+0+8+0+32+64+0=107.
二进制01101011=十进制107.
一、二进制数转换成十进制数
由二进制数转换成十进制数的基本做法是,把二进制数首先写成加权系数展开式,然后按十进制加法规则求和。
这种做法称为"按权相加"法。
1.二进制与十进制的转换
(1)二进制转十进制
方法:
"按权展开求和"
例:
(1011.01)2=(1×23+0×22+1×21+1×20+0×2-1+1×2-2)10
=(8+0+2+1+0+0.25)10
=(11.25)10
2.八进制与二进制的转换
例:
将八进制的37.416转换成二进制数:
37.416
011111.100001110
即:
(37.416)8=(11111.10000111)2
例:
将二进制的10110.0011转换成八进制:
010110.001100
26.14
即:
(10110.011)2=(26.14)8
3.十六进制与二进制的转换
例:
将十六进制数5DF.9转换成二进制:
5DF.9
010111011111.1001
即:
(5DF.9)16=(10111011111.1001)2
例:
将二进制数1100001.111转换成十六进制:
01100001.1110
61.E
即:
(1100001.111)2=(61.E)16
首先说说十进制是怎么回事吧。
十进制是咱们最熟悉的。
所以讲解起来不费劲。
然后,你会发现十进制和二进制并没有什么本质的区别。
十进制里面有十个最基本的符号,0-9,所以,满十的时候,只能进位,因为一个位上最多只有这十中符号可以彼此区分了。
所以,十位上的1,代表了10个个位上的1,同理,百位上的1代表了10个十位上的1.也就是说,相邻的两个位,高位的1代表了10个低位上的1.这就是满10进1的含义。
所以,十进制的123代表多少呢。
这个问题,可以分解成1,2,3分别代表了多少,然后,123就代表了这三个数字各自所代表的数目之和。
1代表了10个十位上的1,而十位上的1又代表了10个各位上的1,所以百位上的1代表了1乘以10的平方。
2代表了2乘以10的一次幂。
3代表了3乘以1的0此幂。
所以123=1*(10**2) + 2*(10**1) + 3*(10**0)
**代表多少次幂。
实际上,二进制与十进制唯一的区别就在于他是满2进1.
所以,二进制的10代表多少呢?
各位的0代表0,高位的1代表1乘以2的一次幂,所以, 10=1*(2**1) + 0*(2**0)=2.
所以,要把二进制转化成十进制,很简单,就是把他的各个位所代表的数目的大小加起来,就这么简单。
所以,二进制的111,转化成十进制,是多少呢?
111=1*4+1*2+1*1=7;
难一点的在于把十进制转化成二进制。
十进制的5,转化为二进制的多少呢。
直接告诉你答案吧,是101.
现在我来分析一下为什么是这个答案。
其实,这个问题的本质就是解答一个方程,这个方程用来确定二进制各个位上的值,究竟是0呢,还是1,因为二进制值有0和1嘛,所以就只有这两种可能性了。
首先看最低位。
如果是1,那么这个二进制对应的数应该是一个奇数,为什么这么说呢,因为,除了最低位以外,其余的位,至少是2的倍数,所以都是整2整2的,所以,最低位应该是1,因为5是奇数嘛!
既然已经用最低位表示了一个1了,那么,其余位,只要表示剩余的4就可以了,因为5-1=4,这里听明白了没?
为了方便表达,我把转化之后的二进制数,表示成。
。
。
。
dcba吧,前面加。
。
。
,是因为这个数究竟有多少位,事先你不知道,只有计算完了之后才知道。
当然,在这里,最后表示成了二进制数101,所以,d=0,c=1,b=2,a=1;
如果明白了,那么继续往下进行。
从刚才的分析中,你应该看出点端倪来了。
其实,十进制转化成二进制的过程,就是一个从低位开始,逐个确定二进制各个位的值的过程。
从低位开始,是因为,越高位,他代表的数就越“整”,倒数第二位代表的是2,第三位代表的是4,第四位是8,每一次都会扩大两倍,越来越“整”,只有高位表达不了的,也就是被高位整除不了的,才丢给低位,刚才第一步就是这么做的。
5除以2以后,余数是1,那么,这个1就丢给最低位了。
其余的4,让高位来表示。
现在考察第二位,也就是b了。
b代表是整2,而c代表整4,d代表整8,所以,只有可以被2整除但是却不能被4整除的那部分,会留给b来表示。
由于现在要表示的是4,可以被4整除,所以b=0.
现在,轮到c了。
同样的道理,只有能被4整除而不能被8整除的部分,留给c。
由于这里刚好是一个4,所以,c=1,c的1,实际上代表的是4,所以,现在剩下0了,也就不用再继续往下表示了。
我刚才说的,只是问题的本质。
至于比较方便的做法,实际上应该是教科书上的那个方法:
a=5%2=1,
5/2=2;
b=2%2=0;
2/2=1;
c=1%2=1;
1/2=0;
结束。
不知道我这么说你听明白了没有。
我说的方法,和教科书上的方法,本质上是一样的。
至于为什么是一样的,证明的过程留给你自己。
总结一下刚才的方法。
刚才,为了让你能够更容易理解,我是从可操作性更强的一个角度来讲解的。
事后诸葛亮一下吧。
把问题解决以后,然后回头再总结总结,这是个好习惯。
你可以从一个简单的问题中,获得很多很多。
这是个好习惯。
实际上,越往高位走,越“整”,表示的额度越大,所以,要表示一个数,应该优先低位。
为什么呢。
因为,高位的表示能力很强,多大都能表示得下。
要是某一位不够,再高两位总可以吧。
所以说,越往高位,容量越大。
但是,越往高位,他的分辨率就越小。
反而是小的东西他们表达不了。
就拿十进制来说吧。
十位上,他只能表示整十整十的,1,2,。
。
。
9这些比较小的他就表达不了了。
百位就更加表达不了了。
所以说,应该优先把那些比较“零碎”的部分,首先留给低位来表达。
越“零碎”的越先表达。
所以,我们操作的顺序是从个位开始的。
个位表示完了,就轮到十位,百位,千位了。
按照这个顺序,当最后剩下为0的时候,这个任务就完成了。
我说得够详细了吧。
希望你理解。
不仅要理解,也要从我刚才讲解的过程中,学到一些学习的方法。
其实,很多问题,当你理解了本质,你会发现其实很简单的。
所以,不要追逐花哨的东西。
把问题理解透彻了,你会发现什么东西都架不住你的分析。
这个时候,你会发现原本看起来需要技巧的东西,其实,你只要分析到位了,他就不再需要技巧。
大道至真,大道至简。
就是这个道理。
再深入一点,给你讲讲小数部分的转化吧。
肚子饿了。
呵呵。
吃饭去了。
回头接着给你讲解吧。
吃完了。
真舒服啊。
接着给你讲吧。
刚才说的其实是整数部分的转化。
小数部分的转化呢,其实也差不多。
假设小数部分是这样的形式:
X.abcd......
其中,X表示整数部分,.代表小数点。
abcd就代表小数部分了。
小数部分,第一位的1代表0.5,第二位的1代表0.25,其次是0.125,0.0625,也就是每次缩小一半。
这个也应该很好理解吧。
假设现在有一个十进制的0.875要转化成二进制数,如何表示呢。
先来分析一下二进制的小数部分的规律吧。
刚才已经讲过了,每个位上的1,能表示的额度,是越来越小的。
所以,这次应该是把比较“整”的,大的部分先留给前面的位表示,剩下来的,由于每一位表示的是越来越小了,所以精度也越来越高,想要多高就有多高,所以,“零碎”的部分,留给后面的来表示就可以了。
0.875里面有一个0.5,所以第一位对应1,也就是说刚才那个X.abcd......里面,a=1,剩下来0.375,不足0.5,所以留给后面的来表示。
0.375里面有一个0.25,刚好第二位的1代表0.25,所以b=1,剩下0.125,c=1,剩下0,所以后面都是0了。
也就是说可以到此结束了。
很简单吧。
不过有一点要注意。
实际上,有可能存在一个数,这个数永远都没法结束。
就好比1/3,要表示成十进制数,是一个无限循环小数。
把一个十进制数表示成二进制数,也有类似的问题。
这个怎么理解呢。
先来看看小数点部分有什么规律吧。
刚才已经看到了吧。
每一次,每一位表示的都要比原来的小一半。
也就是说,在数轴上,每一次,都把原来的相邻两个点,从中间劈开。
把这个区间对半分。
每次都如此。
虽然可以把这个过程无穷无尽地重复下去。
每次所得到的这些区间的端点,就是当前这些位所能表示的数。
也就是说,当前精度下,就之能表示到这个精度了。
虽然可以把这个精度无穷无尽地缩小,以至于分辨率越来越高,但是他终究是每次对半分,总有一些是表达不了的。
所以也就是说,无论是十进制,还是二进制,他们都只能表达数轴上的某些有规律的点。
总有一些点是没法表示的。
所以,他只能无穷地接近某个数,但是却不能用某个时候的有限的精度来表示这个数。
所以,有可能出现无穷尽地转化而没法结束的情况。
就好比1/3=0.33333......,无穷无尽。
怎么样?
说到这里,应该很好理解了吧。
如果这个理解透彻了,那么,八进制,十六进制都很简单了吧。
刚好,8是2的三次方,所以,八进制与二进制的互相转化,十六进制与二进制的互相转化,都很简单。
二进制转化为八进制,很容易,二进制每相邻三位作为一个整体,转化成八进制的一位:
二进制的110 010对应八进制的:
62,其余的一些问题,我就不费口舌了,你得学会自己动脑筋想问题。
最好是自己能给自己提出问题。
提出问题,说明你在独立自主地思考问题。
说明你的思维已经到了一定的深度。
这个很重要。
没有一定的洞察力,提出来的问题也不会有什么技术含量,只有有了洞察力,你才会提出有质量的问题,而不断地积极主动地思考问题,提出问题,又能促进你的思维变得有洞察力。
所以,一定要积极主动,要学会问问题。
.十----->二
给你一个十进制,比如:
6,如果将它转换成二进制数呢?
10进制数转换成二进制数,这是一个连续除2的过程:
把要转换的数,除以2,得到商和余数,
将商继续除以2,直到商为0。
最后将所有余数倒序排列,得到数就是转换结果。
听起来有些糊涂?
我们结合例子来说明。
比如要转换6为二进制数。
“把要转换的数,除以2,得到商和余数”。
那么:
十转二示意图
要转换的数是6,6÷2,得到商是3,余数是0。
“将商继续除以2,直到商为0……”
现在商是3,还不是0,所以继续除以2。
那就:
3÷2,得到商是1,余数是1。
“将商继续除以2,直到商为0……”
现在商是1,还不是0,所以继续除以2。
那就:
1÷2,得到商是0,余数是1
“将商继续除以2,直到商为0……最后将所有余数倒序排列”
好极!
现在商已经是0。
我们三次计算依次得到余数分别是:
0、1、1,将所有余数倒序排列,那就是:
110了!
6转换成二进制,结果是110。
把上面的一段改成用表格来表示,则为:
被除数计算过程商余数
66/230
33/211
11/201
(在计算机中,÷用/来表示)
2.二---->十
二进制数转换为十进制数
二进制数第0位的权值是2的0次方,第1位的权值是2的1次方……
所以,设有一个二进制数:
01100100,转换为10进制为:
下面是竖式:
01100100换算成十进制
"^"为次方
第0位0*2^0=0
第1位0*2^1=0
第2位1*2^2=4
第3位0*2^3=0
第4位0*2^4=0
第5位1*2^5=32
第6位1*2^6=64
第7位0*2^7=0+
---------------------------
100
用横式计算为:
0*2^0+0*2^1+1*2^2+0*2^3+0*2^4+1*2^5+1*2^6+0*2^7=100
0乘以多少都是0,所以我们也可以直接跳过值为0的位:
1*2^2+1*2^5+1*2^6=100
3.十---->八
10进制数转换成8进制的方法,和转换为2进制的方法类似,唯一变化:
除数由2变成8。
来看一个例子,如何将十进制数120转换成八进制数。
用表格表示:
被除数计算过程商余数
120120/8150
1515/817
11/801
120转换为8进制,结果为:
170。
4.八---->十
八进制就是逢8进1。
八进制数采用0~7这八数来表达一个数。
八进制数第0位的权值为8的0次方,第1位权值为8的1次方,第2位权值为8的2次方……
所以,设有一个八进制数:
1507,转换为十进制为:
用竖式表示:
1507换算成十进制。
第0位7*8^0=7
第1位0*8^1=0
第2位5*8^2=320
第3位1*8^3=512
--------------------------
839
同样,我们也可以用横式直接计算:
7*8^0+0*8^1+5*8^2+1*8^3=839
结果是,八进制数1507转换成十进制数为839
5.十---->十六
10进制数转换成16进制的方法,和转换为2进制的方法类似,唯一变化:
除数由2变成16。
同样是120,转换成16进制则为:
被除数计算过程商余数
120120/1678
77/160