int256_t 使用 C++ boost 库能够显示 2^{256} - 1

问题描述 投票:0回答:0

我正在使用 boost/multi precision 中的 cpp_int 头文件,出于某种原因,当我将 -1 转换为 uint256_t 然后将其转换回 int256_t 时,它保持相同的值(~1.15e77)。当我递增这个变量时,它会回滚到 0。为什么我的 int256_t 表现得像 uint256_t?

对格式错误表示歉意,我不习惯使用堆栈溢出。

我尝试打印 int256_t,它打印的值与 uint26_t 相同,但它不应该这样做。我还尝试打印 int256_t(-1) 并且它打印 -1 很好。如果我将 int256_t 与 -1 进行比较,则它等于 false,但如果我将它们都增加然后比较它,则它等于 true,因为它们现在都是 0。

为什么会这样?最大 uint256_t 应该是 0xfff....fff,int256_t 中 -1 的有符号 2s 补码版本也是 0xfff....fff。整数的boost实现不是2s补码吗?

c++ boost integer twos-complement uint
© www.soinside.com 2019 - 2024. All rights reserved.