【问题标题】:Large decimal to binary conversion in Excel - formula only (no VBA)Excel 中的大十进制到二进制转换 - 仅限公式(无 VBA)
【发布时间】:2018-04-01 18:24:59
【问题描述】:

我想将大小数(最多 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")

但为什么原来的不起作用?

【问题讨论】:

标签: excel excel-formula


【解决方案1】:

您不能使用 TEXT 函数格式化 20 位数字,因为 Excel 的精度限制为 15 位。任何更长的时间都会变成零。

您需要使用字符串函数来获得所需的格式,但您只需要将C 中的字符串拆分为足够小的(小于 15 位)字符串。

=TEXT(LEFT(C3,8),"0000 0000 ") & TEXT(MID(C3,9,12),"0000 0000 0000")

你可以为你想要的格式做类似的事情,但是你发布的内容只包含 18 位数字,所以你需要使用正确的格式。

【讨论】:

    【解决方案2】:

    您在 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))

    【讨论】:

      【解决方案3】:

      晚了几年,但这适用于更大的数字:

      =BASE(CellToConvert, 2)
      

      信用:https://stackoverflow.com/a/57826405/2352507

      【讨论】:

        猜你喜欢
        • 2023-03-10
        • 2014-08-14
        • 2013-05-12
        • 2014-02-06
        • 2013-11-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-07-29
        相关资源
        最近更新 更多