gpt4 book ai didi

c++ - 使用波浪号获取 int 的 MAX 值

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:58:33 25 4
gpt4 key购买 nike

我尝试使用代字号获取 int 的 MAX 值。但输出不是我所期望的。当我运行这个时:

#include <stdio.h>
#include <limits.h>
int main(){
int a=0;
a=~a;
printf("\nMax value: %d",-a);
printf("\nMax value: %d",INT_MAX);
return 0;
}

我得到输出:

最大值:1

最大值:2147483647

我想,(例如)如果我在 RAM 中有 0000(我知道第一位显示的是数字 pozitiv 或 negativ)。在 ~ 0000 => < strong>1111 和 -(1111) => 0111 之后,我会得到 MAX 值。

最佳答案

您有一个 32 位二进制补码系统。所以 - a = 0 很简单。 ~a0xffffffff。在 32 位二进制补码表示中,0xffffffff-1。基本代数解释说 -(-1)1,所以这就是您的第一个打印输出的来源。 INT_MAX0x7fffffff

您的逻辑错误在于此语句:“-(1111) => 0111”,不正确。二进制补码的算术否定运算等同于 ~x+1 - 对于您的示例:

~x + 1 = ~(0xffffffff) + 1
= 0x00000000 + 1
= 0x00000001

关于c++ - 使用波浪号获取 int 的 MAX 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5438400/

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