程序员

注册

 

发新话题 回复该主题

相信我,你一定能搞懂进制转换我是一只攻 [复制链接]

1#

在日常生活中,我们通常用来运算的数是十进制数(以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这个二进制数!

到了这里,本章节就已经讲的差不多了。至于其他进制之间的转换,相信聪明如你,看了我上面的讲述,一定能够类推出来。

结语:键盘敲乱月薪过万是不变的真理!

让我们一起努力,中国加油!龙的传人加油!

#二进制#

分享 转发
TOP
发新话题 回复该主题