C语言编程题(四)有符号数与无符号数相加

#include "stdio.h"


int main()
{
 unsigned int a=6;
 int b=-20;
 (a+b>6)?printf(">6"):printf("<=6");
}

要计算-20的补码,需要先找到它的二进制表示形式,然后将其转换为补码。首先,将20转换为二进制,得到00010100。然后,取这个二进制数的反码,即每一位取反。得到:11101011。最后,将反码加1,得到补码:11101100。所以,-20的补码表示为11101100。(绝对值取反加一)

-20在内存中以补码的形式存储,大小为4个字节,其二进制形式为:11111111 11111111 11111111 11101100a 为unsigned int型,b为int型。运算(a+b>6)时,先a+b,根据运算规则,b将被看成是unsigned int 型,即11111111 11111111 11111111 11101100所带表的unsigned int 型数据,化为十进制为4294967276则 a+b = 6 + 4294967276 = 4294967282 〉6。打印第一个数据

6bf89b215bd845c993acd43838798677.png

猜你喜欢

转载自blog.csdn.net/qq_51519091/article/details/132883480