在日常生活中,我们通常用来运算的数是十进制数(以0到9为例)。实际上,常用的数的进制可以分为“二进制”、“八进制”、“十进制”、“十六进制”等。打开电脑的计算器(以win10自带的计算器为例),可以看到程序员计算器里就包含这些进制:
我之前提到过,计算机只能识别二进制数,也就是0和1。那么我们怎样进行不同进制之间的转换呢?
要搞懂二进制,我们先来看十进制。我们知道,十进制数的个位数是不满10的数(0到9)。十位数代表个位数满十进位产生的数,以此类推,百位数是十位上的数满十进位的数。类比到二进制,就是:二进制数的个位数是不满2的数(0和1)。高一位数代表个位数满二进位产生的数,以此类推,再高一位数是倒数第二位上的数满二进位的数。用乘方数来说就是:
十进制数的每一位:10^0=^1=^2=...二进制数的每一位:2^0=12^1=22^2=42^3=8...二进制数都是1和0组成的。我们先从十进制数开始看:十进制数:5转换后的:10^3*1=^2*0=^1*0=^0*5=50+0+0+5=5二进制数:转换后的:2^3*1=82^2*0=02^1*1=22^0*0=08+0+2+0=10(十进制数)
大家可以用程序员计算器计算一下,看看二进制数转换成十进制数是否是10?
接下来就是干货了。希望大家注意看!
我们来探讨小数的二进制转换。依照上面的规律,我们还是先从十进制小数开始。
十进制浮点数:0.^0*0=^-1*3=0.^-2*7=0.^-3*6=0.+0.3+0.07+0.=0.二进制小数:0.00112^0*0=02^-1*0=0.5*0=02^-2*1=0.25*1=0.^-3*1=0.*1=0.0+0+0.25+0.=0.(十进制数)有人问如下这个问题:二进制小数0.怎么转换为十进制数?(错误的问题,原因看下面加粗的字体)如果按照上面的玩法就是这样的:02^0*0=02^-1*3=0.5*3=1.52^-2*7=0.25*7=1.^-3*6=0.*6=0.+1.5+1.75+0.75=4(十进制数)
What?0.b竟然等于4?我们知道十进制的4转二进制得到的应该是0。这样不是矛盾了吗?
其实你问的这个问题本身就是错误的!因为二进制的数不管是整数还是小数都只能由0和1组成,所以不存在0.b这个二进制数!
到了这里,本章节就已经讲的差不多了。至于其他进制之间的转换,相信聪明如你,看了我上面的讲述,一定能够类推出来。
结语:键盘敲乱月薪过万是不变的真理!
让我们一起努力,中国加油!龙的传人加油!
#二进制#