今天简单说一下进制之间的关系,以及各种进制之间的相互转换,如有不足希望指正。
定义十进制: 都是以0-9这九个数字组成,不能以0开头。
二进制: 由0和1两个数字组成。
八进制: 由0-7数字组成,为了区分与其他进制的数字区别,开头都是以0开始。
十六进制:由0-9和A-F组成。为了区分于其他数字的区别,开头都是以0x开始。
上面的定义是比较官方的说法,如果看不懂,下面有简述哦!
简述到底什么是二、八、十、十六进制呢?
首先从我们最熟知的内容入手,我们小学乃至幼儿园都学过的数学公式,大家可以看一下下面的式子:
我们小学都学过的十进制逢十进一,最大数就是九,超过九就进一。这就是计算机中的十进制,由此我们就可以知道: 二进制就是逢二进一,由(0~1)组成,最大是1 八进制就是逢八进一,由(0~7)组成,最大是7 十进制就是逢十进一,由(0~9)组成,最大是9 当然还有我们的十六进制也不能忘了。
十六进制和上面又有所不同,上面我们说过二进制是0~1、八进制是0~7、十进制是0~9。难道十六进制就是0~16吗?这肯定是不对的,听我给你讲一下你就明白为什么不对了(假设我在计算机上打了两个阿拉伯数字1和0,组合起来也就是10,但我现在要问你,这10是十进中的十呢,还是十六进制当中的10呢?你也不知道对吧!所以这就会冲突)
那十六进制中的是又怎么表达呢?创造十六进制的学家就给了我们答案:10→A、11→B ······ 15→F(也就是我们上面说的十六进制由0-9和A-F组成【A~F大小写是无所谓的。a~f、A~F都可以】)
大家可以看到我上面的创造两字标蓝了,为什么要标蓝显示呢,只要大家对这一部分有充分了解,大家其实也可以创造出一个进制来,只要大家创造的这个进制得到了大众的广泛认可就是合理的。
相信大家看完上面的部分已经对进制有一个大概的了解了。那么进制和进制之间又该如何转换呢?下面我们将介绍进制之间的转换。
进制转换 其它转十进制 二进制转十进制:我给大家举个例子吧!如下图所示:(二进制:0010110 转换为十进制为:22)
二进制
0
0
1
0
1
1
0
转换(权值)
0*2^6
0*2^5
1*2^4
0*2^3
1*2^2
1*2^1
0*2^0
十进制
0
0
16
0
4
2
0
16 + 4 + 2 = 22
从右向左(从低位向高位)依次读取二进制数中的每一位并乘以当前位置的权值;
八进制转十进制:例子如下图所示:(八进制:0010110 转换为十进制为:4168)
八进制
0
0
1
0
1
1
0
转换(权值)
0*8^6
0*8^5
1*8^4
0*8^3
1*8^2
1*8^1
0*8^0
十进制
0
0
4096
0
64
8
0
4096 + 64 + 8 = 4168
从右向左(从低位向高位)依次读取二进制数中的每一位并乘以当前位置的权值;
十六进制转十进制:例子如下图所示:(十六进制:00101bA 转换为十进制为:65978)
十六进制
0
0
1
0
1
b
A
转换(权值)
0*2^6
0*16^5
1*16^4
0*16^3
1*16^2
b(11)*16^1
A(10)*16^0
十进制
0
0
655360
256
176
10
65536 + 256 + 176 + 10 = 65978
从右向左(从低位向高位)依次读取二进制数中的每一位并乘以当前位置的权值;
注: ①2^4 :二的四次方(2^0→二的0次方、2^1→二的1次方…………) ②权值:为了更好理解权值我给大家举个例子,如下图所示:
这是一个小学的数学题,我姥姥都会做,结果是:四百五十三(453),那这453是怎么来的呢?
我们小学老师当时教我们的是: 4*100 + 5*10 + 3*1 = 400 + 50 + 3 = 453
那么1、10、100……是怎么来的呢? 1 → 10^0(任何数的零次方都等于1) 10 → 10^1(任何数的一次方都等于其本身,10的一次方等于10) 100 → 10^2(10的平方(两个十相乘) --> 10 * 10) 1000→ 10^3(10的立方(三个十相乘) --> 10 * 10 * 10) …………………………后面还有很多,无穷无尽!
这就是十进制的权值/位权(权值也叫做位权),那说完十进制的位权了,八进制的、二进制、乃至十六进制的呢?很简单啊! 二进制就是: 2^0,2^1,2^2,2^3 八进制就是: 8^0,8^1,8^2,8^3 十六进制就是: 16^0,16^1,16^2,16^3
上面我们学习了,怎样把我们不熟悉的那些进制,转换为我们所熟知的十进制,那怎么再转回去呢?下面要讲的就是怎么样转回去!
十进制转其他 十进制转二进制:我给大家举个例子吧,大家可以看的更直观一些,如下图所示:
我这里随便写了一个十进制的数字(字不好看勿笑!)9,因为要转二进制,所以就除以2,取余数,直至余数为零,余数自下而上依次排开就是:1001
所以十进制9转换二进制为:1001
十进制转八进制:举个例子吧,如下图所示:
我这里也是随便写了一个十进制的数字,因为要转八进制所以就除以8,取余数,直至余数为零,余数自下而上依次排开就是:1434
所以十进制796转换八进制为:1434
十进制转十六进制:举个例子吧,如下图所示:
我这里还是随便写了一个数字,因为要转十六进制所以就除以16,取余数,直至余数为零,余数自下而上依次排开就是:31c
所以十进制796转换十六进制为:31c
进制速查表:二进制
八进制
十进制
十六进制
0000
0
0
0
0001
1
1
1
0010
2
2
2
0011
3
3
3
0100
4
4
4
0101
5
5
5
0110
6
6
6
0111
7
7
7
1000
10
8
8
1001
11
9
9
1010
12
10
A
1011
13
11
B
1100
14
12
C
1101
15
13
D
11101614E11111715F最后给大家讲一个小故事。大家都知道计算机只认识二进制中的0和1,但是大家有没有想过这是为什么 是二进制呢?为什么不是我们所熟知的十进制呢,十进制多简单啊,为什么是二进制,还要转换这么麻烦呢?
原来在很早之前的计算机还没有这么先进的时候,信息都是存储在穿孔纸带上的(说白了就是往一张白纸上打圆孔)如下图所示:
穿孔纸带上有空就是0,没孔就是1。用二进制来表示的好处就一目了然的,如果用十进制呢?难道再打出个半圆?三分之一圆?而现在我们知道计算机内部都是电路板,电路板就用电信号传递数据,低电平和高电平来分别表示0和1。
希望该文章对你有所帮助,若有错误的地方还望大家批评指正,谢谢大家阅读!