excel十进制转换二进制函数(每天学一点Excel201099)
【注:手动计算需要按F9】
205 bin2dec
语法:bin2dec(number)
注意:
1)number不能多于10位,最高位为符号位(0表示正,1表示负),其余9位为数字位,负数用二进制的补码表示。
2)还是用前面的表格,最上面增加1行标题行,分别输入“二进制”、“八进制”、“十进制”。在C2单元格输入公式“=bin2dec(A2)”,结果显示511,是右对齐的数字。
填充二进制到十进制的转换公式
3)将公式向下填充。
成对排列
4)现在我们把2进制数加上符号位和前置0写满10位,B列公式加上第2个参数10,改变排列顺序,将代码相反的两个数放在一起看看。
5)在计算机里面,一个2进制数有原码、反码、补码三种编码表示方式。正数的反码和补码都是其本身不变。负数的反码,符号位不变,其余各位取反。负数的补码,符号位不变,其余各位取反,然后加上1。为了保证带符号数值计算结果的正确,最终采用了补码来进行计算。表格中两两成对相加的结果均为1111111111,即十进制的-1。
6)-1的补码是1111111111,-1的反码是1111111110。我们加上1,用补码计算结果为0000000000,进位的1溢出了,结果为0。用反码计算时结果为1111111111,还原成原码是1000000000,相当于-0,同样是0有两种表示方法,很奇怪。所以使用补码计算就能回避这个问题,因为-511的补码是1000000001,所以再减去1便将1000000000解释成-512。
206 bin2hex
语法:bin2hex(number,[places])
注意:
1)number不能多于10位,最高位为符号位(0表示正,1表示负),其余9位为数字位,负数用二进制的补码表示。
2)还是用前面的表格,在增加最上面增加一列1行“十六进制”。在D2单元格输入公式“=bin2hex(A2,10)”,结果显示00000001FF,是左对齐的文本。
增加16进制列
3)向下填充公式,如图所示。
4)16是2的4次方,人工转换时每4位2进制可以转换成1位17进制,9位2进制数000000000~111111111可以转化为3位16进制数000~1FF。对于负数,十进制的-1对应FFFFFFFFFF,十进制的-512对应FFFFFFFE00。
207 oct2bin
语法:oct2bin(number,[places])
注意:
1)number不能多于10位,相当于二进制的30位,最高的二进制位为符号位(0表示正,1表示负),其余29位为数字位,负数用二进制的补码表示。
2)作为8进制到2进制的逆运算,而作为结果的2进制只能用十位数字表示。因为8是2的3次方,人工转换时每1位8进制可以转换成3位2进制,所以3位8进制数000~777可以转化为10位2进制数0000000000~0111111111,对于负数,八进制的7777777777~7777777000可以转化为二进制的1111111111~1000000000,即十进制的-1~-512。
3)我们将前面表格没有公式的A列部分单元格增加黄色背景。将B列八进制结果用选择性粘贴,只将文本数值粘贴到下面,并增加黄色背景。
4)在A11单元格输入公式“=oct2bin(B11)”,向下填充,然后按F9重新计算。
5)对比一下转换结果,没问题。
(待续)
,免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com