【重点】进制转换
in Default with 1 comment
Read:247

【重点】进制转换

in Default with 1 comment

我们常用的进制有二进制八进制十进制十六进制

归根结底,不管是多少进制的数,都可以用来表示一个具体的数。也就说各种进制数之间可以相互的转换,我们生活中就用的是十进制数,0123456789
十进制逢十进一,那个二进制就是逢二进一,以此类推

二进制与十进制之间的转换

十进制转二进制

十进制数÷2取余数。余数为权位上的数,得到的商继续÷2,直到商为0

任意一个整数,除以2,得到的余数要要么是1要么是0.

举个列子,十进制数188,我们把它转换成二进制数。
首先

188÷2=94,余数为0
94÷2=47,余数为0
47÷2=23,余数为1
23÷2=11,余数为1
11÷2= 5,余数为1
5÷2= 2,余数为1
2÷2= 1,余数为0
1÷2= 0,余数为1

最后我们把上面的算式的余数从下往上读,10111100这个二进制数就是十进制数188。记住要从下往上读,还有二进制数第一位一定是1。

计算机内部表示数的字节单位是定长的,如8位,16位,或32位,64位。所以,位数不够时,高位补零,所说,188转换成二进制10111100,十六位计算机中是这样表示的0000000010111100

二进制转十进制

二进制转十进制采用权相加法,举个列子10111100,这个二进制数,首先他有八位,从左到右,第一个为1,在这个1的右边还有7个数,那么第一个数1就变成1×2的7次方,第二个数是0,他的右边还有6位数,那个这个数就变成0×2的6次方,以此类推,到了第八个数,就是最右边的数0,他的右边没有数,就是0个,所以他变成0×2的0次方把这些每个数字转换的式子的结果相加,就转换成10进制了

10111100转换成十进制
1×2^7=128
0×2^6=0
1×2^5=32
1×2^4=16
1×2^3=8
1×2^2=4
0×2^1=0
0×2^0=0
把这些数字全部加起来128+0+32+16+8+4+0+0=188二进制数就转换好了

其实二进制数转换十进制数,换种思路,比如10111100,从它的右边第一个数开始,挨个乘2的n次方,n是从0开始,逐渐+1。

二进制与八进制之间的转换

二进制转八进制

三合一法,举个例子:
10111100这个二进制数,我们从右往左,每三个数一组

分完组后是这样的【1,0】【1,1,1】【1,0,0】

说了从右到左每三个一组,左边的最后一组不足三个,就在左边补上0。

最终分组是这样的【0,1,0】【1,1,1】【1,0,0】

按照二进制转换十进制的权位法,把每一个组的三个2进制都转换成十进制数

从右往左的分组,计算时从左往右挨个计算每组的十进制
第一组:0×2^2 + 1×2^1 + 0×2^0 =2
第二组: 1×2^2 + 1×2^1 + 1×2^0 =7
第三组: 1×2^2 + 0×2^1 + 0×2^0 =4
三组二进制的转换成十进制算完了,挨个加起来就是八进制,不是加法,是位数相加,相当于字符串的拼接:2+7+4=274,所以274就是二进制10111100的八进制,274是十进制188的八进制

八进制转二进制

反向推理二转八,
我们有个八进制数274
拆分开来,2,7,4
这个每个数字当十进制,现在每个数字十进制转二进制。

2:
2÷2=1,余数为0
1÷2=0,余数为1
那么2这个十进制数变成二进制就是10
现在这个二进制分组,3个数一组,不足3个的在左边加0,所以【010】
7:
7÷2=3,余数为1
3÷2=1,余数为1
1÷2=0,余数为1
根据上面的规则,这组为【111】
4:
4÷2=2,余数为0
2÷2=1,余数为0
1÷2=0,余数为1
【100】记住十转二,余数要倒着读
我们把274这个八进制拆开,每个数字单独转换,转换成了3组二进制,然后三组二进制拼接在一起010111100,去掉二进制开头的0,就得到了10111100

二进制与十六进制之间的转换

二进制转十六进制

同二转八一样的,只不过二转八,是从右往左分组,每三个一组,二转十六,也是从右往左分组,每4个一组,不足的在左边补0

最后算出来的值会有大于9的数,这些就用字母来表示,如下:
ABCDEF对应10,11,12,13,14,15

十六进制转二进制

同八转二一样的道理。二转十六反向推理

未完待续......
参考————点击这里查看进制转换的参考,含图片讲解

如果对你有帮助,打钱

赞赏



Responses
  1. 上课没怎么听,过来温习一下。

    Reply