gpt4 book ai didi

c - 一个数的补码

转载 作者:行者123 更新时间:2023-12-04 12:06:36 24 4
gpt4 key购买 nike

假设我有一个变量

int a=512

现在,当我应用 ~a 时,这意味着 c 中的补码。我如何得到 -513 作为输出。

int 的大小至少为 16 位,二进制等价于 512 是

0000 0010 0000 0000 现在当你做它的补码时它变成了

1111 1101 1111 1111。现在谁能告诉我为什么输出是 -513。

我现在可以希望这个论坛中的人理解我的问题。

最佳答案

负数通常表示为 two's complement ,这就是为什么要这样解释的原因。

假设 int 是 16 位的,您将拥有位模式 1111 1101 1111 1111。由于设置了最高位,因此该数字为负数。要转换为十进制,根据二进制补码的规则,首先将数字按位取反。这带回了你的 512。然后加上一个,得到 513。由于数字是负数,我们得到 -513。

关于c - 一个数的补码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4647141/

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