【注:手动计算需要按F9】

205 bin2dec

语法:bin2dec(number)

注意:

1)number不能多于10位,最高位为符号位(0表示正,1表示负),其余9位为数字位,负数用二进制的补码表示。

excel十进制转换二进制函数(每天学一点Excel201099)(1)

2)还是用前面的表格,最上面增加1行标题行,分别输入“二进制”、“八进制”、“十进制”。在C2单元格输入公式“=bin2dec(A2)”,结果显示511,是右对齐的数字。

excel十进制转换二进制函数(每天学一点Excel201099)(2)

填充二进制到十进制的转换公式

3)将公式向下填充。

excel十进制转换二进制函数(每天学一点Excel201099)(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,是左对齐的文本。

excel十进制转换二进制函数(每天学一点Excel201099)(4)

增加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列八进制结果用选择性粘贴,只将文本数值粘贴到下面,并增加黄色背景。

excel十进制转换二进制函数(每天学一点Excel201099)(5)

4)在A11单元格输入公式“=oct2bin(B11)”,向下填充,然后按F9重新计算。

5)对比一下转换结果,没问题。

(待续)

,