gpt4 book ai didi

binary - 负定点数表示

转载 作者:行者123 更新时间:2023-12-03 08:47:09 25 4
gpt4 key购买 nike

我正在编写一个通用例程,用于在十进制和二进制表示之间转换定点数。

对于正数,处理很简单,但是当事情变成负数时,我发现了不同的来源。 Someone表示有一个位用于保存符号,而 others假设整个数字应该用 2 的补码表示为伪整数,即使它是负数。

请告诉我哪个来源是正确的,或者有符号定点数的标准表示形式吗?

另外,如果2的补码表示是正确的,那么如何用零整数部分表示负数。例如-0.125

最佳答案

定点数只是位值已更改的二进制值。为位分配位值是一项任意的人类事件,我们可以用任何有意义的方式来完成它。通常我们讨论的是二进制整数,因此可以方便地将位值 2^0 = 1 分配给 LSB,将 2^1=2 分配给 LSB 左侧的位,依此类推。对于 N 位整数,MSB 的位值变为 2^(N-1)。如果我们想要一个二进制补码表示,我们将 MSB 的位值更改为 -2^(N-1),并且所有其他位位值保持不变。

对于定点值,如果我们想让F位代表数字的小数部分,那么LSB的位值就变成2^(0-F)对于无符号数,MSB 的位值变为 2^(N-1-F),对于有符号数,MSB 的位值变为 -2^(N-1-F)。

那么,我们如何用补码定点值表示 -0.125?这等于 0.875 - 1,因此我们可以使用一种表示形式,其中 MSB 的位值为 -1,所有其他位的值加起来为 0.875。如果您选择一个具有 3 个小数位的 4 位定点数,您会说二进制 1111 等于十进制 -0.125。将各个位的位值相加,得到 (-1) + 0.5 + 0.25 + 0.125 = -0.125。我个人喜欢将二进制数写为1.111,以记下哪些位是分数,哪些位是整数。

我们使用这种方法的原因是普通的整数算术运算符仍然有效。

关于binary - 负定点数表示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60942450/

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