本篇大纲:
①进制说明
②二进制与其他进制互转
③八进制与十进制互转
④十六进制与十进制互转
⑤八进制与十六进制互转
关于进制:
所有数字在计算机底层都是以二进制形式存在的
对于整数,有四种表达形式:
二进制(binary):0,1 ,特点: 满2进1,借1当2,以0b或0B开头
八进制(octal):0-7 , 特点: 满8进1,以数字0开头
十进制(decimal):0-9 , 特点: 满10进1
十六进制(hex): 0-9及A-F, 特点: 满16进1,以0x或0X开头表示。A-F不分大小写
先看一下各进制间数字对应关系:
有个急躁的哥哥说,你发个破表让我看个屁啊,啥都没讲,我能看懂啊?
看到这里,俺也想说:
不过别急,我们一个一个讲:
二进制:
计算机中所有数据都是通过二进制形式保存的,虽然我们平时敲代码,又是"abcd"",又是"你我他"的,一敲敲那么老长,实际上保存在计算机中都是通过 01 二进制方式,可能你想不明白咋回事,不明白没关系,可以百度。
本篇重点:
十进制转二进制:
方法:除2取余的逆
下面...(突然被打断....)
"喂,铁子,是不是忘了点啥?"
"啥?"
"二进制转十进制呢?????这个没讲就讲十进制转二进制?"
"哥哥,别急呀!"
来先看个图:
求13的二进制;
13/2=6余1;
6/2=3余0;
3/2=1余1;
1/2=0余1;
1011 逆转: 1101
二进制转八进制
方法 : 把二进制从低位到高位依次三个一组,最后不够的高位补0, 再分别算成十进制数,然后拼接起来就可以了。
看图:
如:0000 0000 0000 0000 0000 0000 1110 1001二进制数
我们从低位开始每三位分为一组,如下: 000 000 000 000 000 000 000 000 011 101 001(前两位以为不够三位,高位补0,如粗体所示),这样我们就将一个二进制数分成了11组(前边位数都是0,没有必要分)
先算011 ,2²*0+2¹*1+2º*1=3;
再算101, 2²*1+2¹*0+2º*1=5;
最后算001,2²*0+2¹*0+2º*1=1;
拼起来:结果就是0351
有个哥哥说:弟弟,明明是351?怎么就0351了?
八进制需要0开头,需要0开头,需要0开头,细节细节(小声bb)。
二进制转十六机制
方法:跟转八进制原理差不多,不过十六进制是以每4位为一个单位
基本跟八进制差不多,不多说了。
二进制转十进制:
方法:按权展开求和
如下图:
规律:个位上的数字的次数是0,十位上的数字的次数是1,......,依次递增
八进制转二进制:
方法:二进制转八进制是三合一,那反过来肯定要一分三,分的方法:除2取余的逆
将0357八进制数转换成二进制数:
先从3下手:
3/2=1余1
1/2=0余1
逆转(不够三位,末位补0,然后逆转) : 011 。
再算5:
5/2=2余1;
2/2=1余0;
1/2=0余1;
逆转:101 。
再算7:
7/2=3余1;
3/2=1余1;
1/2=0余1;
逆转 :111 。
最后拼接起来,结果是 011 101 111 。
十六进制转二进制:
方法 : 跟八进制转二进制一样,只不过是一分四。
看个图吧,不详细说了:
十进制、八进制相互转换:
八进制转十进制:
方法 : 按权相加
如 0537八进制数转十进制:
8²*5+8¹*3+8º*7 = 351;
十进制转八进制:
方法:除8取余的逆(直接法),或者先转成二进制,再转成8进制(间接法)
如:351十进制数转成8进制
351/8=43 余7
43/8=5余3
5/8=0余5;
逆转:0537
十六进制、八进制互转(与转换八进制相似)
八进制、十六进制互转:先转成二进制,再转化
能看到这里,我发现你是真的爱我,那我也想对你说一句:
把耳朵伸过来
.
.
.
.
.
.
.
如果有用,麻烦点个赞呗,软件行业的小学生,Android上的弟弟在这里跪谢了
END