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

文章讲述了如何将-20转换为补码,以及在C语言中进行`a+b>6`运算时,由于类型转换规则,-20被当作无符号整数处理的过程。
摘要由CSDN通过智能技术生成
#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

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值