今天简单说一下进制之间的关系,以及各种进制之间的相互转换,如有不足希望指正。
定义
十进制: 都是以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 | 65536 | 0 | 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 |
1110 | 16 | 14 | E |
1111 | 17 | 15 | F |
最后给大家讲一个小故事。大家都知道计算机只认识二进制中的0和1,但是大家有没有想过这是为什么 是二进制呢?为什么不是我们所熟知的十进制呢,十进制多简单啊,为什么是二进制,还要转换这么麻烦呢?
原来在很早之前的计算机还没有这么先进的时候,信息都是存储在穿孔纸带上的(说白了就是往一张白纸上打圆孔)如下图所示:
穿孔纸带上有空就是0,没孔就是1。用二进制来表示的好处就一目了然的,如果用十进制呢?难道再打出个半圆?三分之一圆?而现在我们知道计算机内部都是电路板,电路板就用电信号传递数据,低电平和高电平来分别表示0和1。
希望该文章对你有所帮助,若有错误的地方还望大家批评指正,谢谢大家阅读!