gpt4 book ai didi

c++按位加法,计算最终的代表位数

转载 作者:行者123 更新时间:2023-11-28 03:16:11 27 4
gpt4 key购买 nike

我目前正在开发一个实用程序来处理位集上的所有算术运算。位集可以自动调整大小以适应任何数字,因此它可以对非常大的位集执行加法/减法/除法/乘法和模运算(我想在里面加载一部 700Mo 电影以将其视为原始整数)

虽然我面临一个问题,但我需要调整我的位集的大小以适应添加后所需的确切位数,但我无法想出一个绝对法则来确切知道多少位会需要存储所有内容,只知道两个数字正在处理的位数(它的表示是正数还是负数,都没有关系)

如果我的问题不够清楚,我有完整的代码可以与您分享以指出问题。

提前致谢。jav974

最佳答案

but i couldn't come up with an absolute law to know exactly how many bits would be needed to store everything, knowing only the number of bits that both numbers are handling (either its representation is positive or negative, it doesn't matter)

你也不会:没有办法给出“只有两个数字正在处理的位数”。

对于相同符号的数字,您可能需要一个额外的位 - 您可以从较小数字的最高有效位开始,扫描 0 以吸收进位的影响。例如:

1010111011101 +
..10111010101
..^ start here

因为这里的两个数字都是 1,所以您需要向左扫描,直到遇到 0(在这种情况下,结果的位数与较大输入的位数相同),或者直到您到达较大数字的最高有效位(在这种情况下,结果中还有一位数字)。

1001111011101 +
..10111010101
..^ start here

在这种情况下,较长的输入在起始位置为 0,您首先需要进行向右移动扫描,以确定在向左发射之前是否会从该起始位置的右侧进位 -上面移动扫描。

当符号不同时:

  • 如果一个值比另一个值少 2 位或更多位,则结果中所需的位数将与较大输入中的位数相同或少一位
  • 否则,您将不得不做更多的加法运算才能计算出结果需要多少位数。

这是假设符号位与幅度位的计数是分开的。

关于c++按位加法,计算最终的代表位数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16808782/

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