C++中两个unsigned型数值相减

110 篇文章 0 订阅
1 篇文章 0 订阅
有代码:
unsigned u1 = 42, u2 = 10;
std::cout<<u2 - u1 <<std::endl;
它的结果是什么?

下面研究一下过程。

在我们现实生活中,10-42=-32,但是在C++里面并不是这样。得到-32后时int型,要把它再放入unsigned型,则必须取其模。

取模过程上一篇笔记中已经有记录:原码—反码—补码。

所以,先把32化成二进制,然后在符号位上添上1(int依旧占32位),得到

所以可知-32的二进制为     :10000000000000000000000000100000;

然后符号位不变,取得反码:11111111111111111111111111011111;

最后在末尾加1取得补码     :11111111111111111111111111100000;

然后输出时化为十进制,便得到输出的结果。

PS:32位打0真的不好打,要仔细!

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值