我想将大小数(最多2 ^ 18)转换为格式化的二进制数。
我的十进制数字从单元格A3开始。在B3中我输入了
=DEC2HEX($A3, 5)
转换为5位十六进制数。然后,在C3中,我进入了
= HEX2BIN(MID($B3,1,1), 4) & HEX2BIN(MID($B3,2,1), 4) & HEX2BIN(MID($B3,3,1), 4) & HEX2BIN(MID($B3,4,1), 4) & HEX2BIN(MID($B3,5,1), 4)
给我一个20位二进制数字。
最后,在D3中,我进入了
=TEXT($C3, "0000 0000 0000 0000 0000")
这一切都运作良好,直到我达到32,769。从那时起,我失去了最不重要的1!
32,763: 0000 0111 1111 1111 1011
32,764: 0000 0111 1111 1111 1100
32,765: 0000 0111 1111 1111 1101
32,766: 0000 0111 1111 1111 1110
32,767: 0000 0111 1111 1111 1111
32,768: 0000 1000 0000 0000 0000
32,769: 0000 1000 0000 0000 0000
32,770: 0000 1000 0000 0000 0010
32,771: 0000 1000 0000 0000 0010
32,772: 0000 1000 0000 0000 0100
32,773: 0000 1000 0000 0000 0100
32,774: 0000 1000 0000 0000 0110
32,775: 0000 1000 0000 0000 0110
32,776: 0000 1000 0000 0000 1000
32,767: 0000 1000 0000 0000 1000
为什么???
我有一个解决方法(这是一个痛苦的因为我的格式更像是“00 000 000 0-00 000 000-0”):
= TEXT(HEX2BIN(MID($B3,1,1), 4), "0000") & " " & TEXT(HEX2BIN(MID($B3,2,1), 4), "0000") & " " & TEXT(HEX2BIN(MID($B3,3,1), 4), "0000") & " " & TEXT(HEX2BIN(MID($B3,4,1), 4), "0000") & " " & TEXT(HEX2BIN(MID($B3,5,1), 4), "0000")
但为什么原来不起作用?
答案 0 :(得分:1)
您无法使用TEXT功能格式化20位数字,因为Excel的精度限制为15位数。任何更长的东西都会变成零。
您需要使用字符串函数来获取所需的格式,但您只需将C
中的字符串拆分为足够小(少于15位)的字符串。
=TEXT(LEFT(C3,8),"0000 0000 ") & TEXT(MID(C3,9,12),"0000 0000 0000")
您可以针对所需的格式执行类似操作,但您发布的内容仅包含18位数字,因此您需要使用正确的格式。
答案 1 :(得分:1)
C3中的公式采用单独的4位二进制数,并将它们连接成一个长字符串。为什么不在此处插入间隙:
= HEX2BIN(MID($B3,1,1), 4) & " " & HEX2BIN(MID($B3,2,1), 4) & " " &HEX2BIN(MID($B3,3,1), 4) & " " & HEX2BIN(MID($B3,4,1), 4) & " " & HEX2BIN(MID($B3,5,1), 4)
或者您可以使用数组公式(在Excel 2016中):
=TEXTJOIN(" ",FALSE,HEX2BIN(MID(B3,ROW($1:$5),1),4))
答案 2 :(得分:0)