gpt4 book ai didi

c - 相反符号按位相加

转载 作者:行者123 更新时间:2023-11-30 20:47:23 25 4
gpt4 key购买 nike

int main(){
int a = 10, b = -2;
printf("\n %d \n",a^b);
return 0;
}

该程序输出-12。我不明白怎么办。请解释一下。

0111 1110 -> 2's complement of -2
0000 1010 -> 10
---------
0111 0100

这个 no 似乎大于 -12 并且是 +ve。但我如何得到 -12 的 o/p 呢?

最佳答案

要找到负整数的补码,首先要找到其大小的二进制表示形式。然后翻转其所有位,即应用按位 NOT 运算符 !。然后添加 1 到其中。因此,我们有

2       -->  0000 0000 0000 0010
~2 --> 1111 1111 1111 1101 // flip all the bits
~2 + 1 --> 1111 1111 1111 1110 // add 1

因此,-2的二进制补码二进制表示为

1111 1111 1111 1110

现在,假设int的大小为4,则ab的二进制补码表示为 -

a -->        0000 0000 0000 1010  --> 10
b --> 1111 1111 1111 1110 --> -2
a^b --> 1111 1111 1111 0100 --> -12

运算符^ 是按位XOR 或异或OR 运算符。如果对 ab 的相应位进行运算,并且仅当这些位不都是 0 时,计算结果为 1或两者均为 1,否则计算结果为 0

关于c - 相反符号按位相加,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23309380/

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