gpt4 book ai didi

excel - MS Excel 中的 HEX2OCT 公式返回错误结果

转载 作者:行者123 更新时间:2023-12-02 17:37:31 25 4
gpt4 key购买 nike

使用 MS Excel 的 Hex2Oct 将十六进制值“FFFFFFFF00”转换为八进制值时,应按照上述规则返回“错误字符串”here :

If number is negative, HEX2OCT ignores places and returns a 10-character octal number.

If number is negative, it cannot be less than FFE0000000, and if number is positive, it cannot be greater than 1FFFFFFF.

If number is not a valid hexadecimal number, HEX2OCT returns the #NUM! error value.

If HEX2OCT requires more than places characters, it returns the #NUM! error value.

If places is not an integer, it is truncated.

If places is nonnumeric, HEX2OCT returns the #VALUE! error value.

If places is negative, HEX2OCT returns the #NUM! error value.

但它计算并返回“7777777400”,而不考虑链接中提到的规则/注释。

例如:

计算 HEX2OCT 时,

根据 Excel 规则,如果数字为正数,则它不能大于 1FFFFFFF(十六进制)<->3777777777(八进制)<->536870911(十进制)。

但是在计算 FFFFFFFF00(十六进制)<-> 7777777400(八进制)<-> 1099511627520(十进制)的 HEX2OCT 时。

此处的十六进制值 FFFFFFFF00 大于 1FFFFFFF,但 MS Excel 不返回错误字符串,而是返回转换后的八进制值。

谁能解释一下为什么吗?

最佳答案

FFFFFFFF00 实际上完全在 hex2oct 的范围内,因为它是一个负数。

根据该文档,它可以处理的最大负数是 FFE0000000,转换为十进制后为 -536870912。将“大”十六进制转换为十进制会产生 -256

FFFFFFFF00 的值看起来这么大的原因是它是一个负数。第一位设置为 1(转换为二进制时),表示该数字为负数。负数使用 two's complement 以二进制计算通过翻转每一位然后将数字加 1 即可找到。

<小时/>

撤销二进制补码:

对于你的大数字,二进制表示是:

 1111111111111111111111111111111100000000

减去1:

 1111111111111111111111111111111011111111

翻转所有位:

 0000000000000000000000000000000100000000

这是 256

所以..基本上,如果十六进制看起来很大,但第一位是1,那么它实际上是一个小的负数,并且完全在允许值的范围内。

最后,当您hex2oct时,您不会得到这些负号,因为我们仍然不是十进制表示法。八进制的第一位仍然是 1(转换为二进制时),因为它仍然是相同的数字,只是以不同的计数系统表示。

关于excel - MS Excel 中的 HEX2OCT 公式返回错误结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44135052/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com