一、什么是进制
我们用十进制来理解其他进制。
我们日常用的就是十进制,我们一起来数个数:
十进制:00、01、02、03、04、05、06、07、08、09、
10、11、12、13、14、15、16、17、18、19、
20、21、22、23、24、25、26、27、28、29
先看蓝色数字,我们拥有从0到9,一共10个数字,从0数到9,数字用完了,那就前面一位(橘黄色部分)往上一位一位升。那么我们再理解别的进制。
二进制:0、1(我们只有两个数,结果用完了,为了方便理解,你可以把他们看成00,01)
10、11(又用完了,再往前加)
100、101、110、111
1000、1001、1010、1011、1100、1101、1110、1111
(之前是数到九往前进1,现在是数到1就要往前进1)
八进制:0、1、2、3、4、5、6、7
10、11、12、13、14、15、16、17
20、21、22、23、24、25、26、27
十六进制:(这里值得说一下,按我们的习惯,我们只有10个数字:0、1、2、3、4、5、6、7、8、9,但我们需要16个数字,于是往后加了字母,就变成0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F,这样我们就凑够16个符号了,接下来我们开始数数)
0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F
10、11、12、13、14、15、16、17、18、19、1A、1B、1C、1D、1E、1F
20、21、22、23、24、25、26、27、28、29、2A、2B、2C、2D、2E、2F
二、进制的转换
我们平时用的就是10进制,看其他的看着不舒服,那我们就要学会他们怎么变成10进制,又怎么变回去。
十进制转二进制:(不停的用除出来的得数再除2,要余数)
例:把25转换成二进制
25/2=12余1
12/2=6 余0
6/2=3 余0
3/2=1 余1
1/2=0 余1
答案要从下往上排就是11001
十进制转八进制:(不停的用除出来的得数再除8,要余数)
例:把25转换成八进制
25/8=3余1
3/8=0 余3
答案要从下往上排就是31
十进制转十六进制:(不停的用除出来的得数再除16,要余数)
例:把25转换成十六进制
25/16=1余9
1/16=0 余1
答案要从下往上排就是19
二进制转十进制:
例:把11001转换成十进制(次方就从又往左依次增加)
八进制转十进制:
例:把31转换成十进制(次方就从又往左依次增加)
十六进制转十进制:
例:把19转换成十进制(次方就从又往左依次增加)
三、原码,反码,补码
这里的原码指的是计算机语言的原码,我们知道,计算机的语言是二进制,所以它的原码的样子就是010111,这种二进制的数字串。
但是,在这个时候,出现了一个问题,我们的正数都可以用二进制来表示,如:2的二进制是10.
那负数怎么办?
这时候,有个大聪明就说:那我们把数的前面都再加一位,0表示正,1表示负!
这样010就是+2,110就是-2,这不就行了,
可是问题来了,你知道第一位表示的是负号,计算机不知道
计算机会把它当成6,这就会导致,只要出现负数,就一定会错。
可减法其实就是负数。
那减法怎么办?
我们先看看二进制加法:
例1:
+2的二进制10
那么10+10=100
这个100刚好是4,
例2:
+2的二进制10
+1的二进制1
那么10+1=11
这个11刚好是3,
说明我们加法没问题
那我们减法咋搞?如果和加法一样?
正常思路:2-2就是2+(-2)
例1:
2为010
-2为110
所以10+110=1000,1000是8
例2:
+2的二进制10
-1的二进制101
那么10+101=111
这个111答案为7,就算你把第一个1去掉,也是11,答案为3
这答案不对
那二进制减法怎么做,怎么才能计算出正确的减法?
改变减法的计算流程,遇见加法就让计算机正常做,遇见减法,就让计算机换个方式做加法
一个大聪明发现:
我们正数没问题,那么正数就不动,只改变负数,让他们的结果是对的就可以;
+2的二进制是010,那就让它一直是010
下面为我们一起去想办法更改减法的计算流程,
当计算机遇见减法时:
例:
+2的二进制010
-1的二进制101
在计算机眼里,他是10+101
那么我们告诉计算机,你这样做:
第一步:
-1的二进制是101,左边第一位的1表示符号,所以这个1不变,
其余的01,我们先把0和1反一下(把1变成0,把0变成1),
最后得到110
第二步:
上面得到110,
给100+1,
则100+1=111
第三步:
现在我们再和前面的正数相加
010+111=1001
然后告诉计算机,因为之前我们最多的是三位,也就是之前的-1,是101,所以我们现在也只能取3位,所以计算机取出来是001,答案就是1
例2:
我们随便再取一个数试一下,
9的二进制:1001
-5的二进制:1101
9+(-5) =1001+1101
9不变,为1001
-5
第一步:1010
第二步:1011
第三步:1001+1011=10100
第四步:之前最高位为4位,现在也取4位,变为0100
0100刚好为4
总结:当你计算二进制减法的时候,正数不变,
第一步反码:负数除了开头表示符号的1,其他反一下
第二步补码:把上面反过的数+1
第三步:再去和正数相加
第一步操作完的数叫反码,第二步+1后的数叫补码
这两个就是用来计算减法的
四、传送门
上一站: