关于二进制原码 补码加法问题

disciple 2008-10-11 07:46:51
#include <iostream>
using namespace std;

void main()
{
int a = 0xC0040000;
int b = 0x7fffffff;

cout<<dec<<a<<endl<<b<<endl;
cout<<hex<<b+a<<endl;

}
a+b输出什么,这样算出来的是两个16进制数直接相加并溢出,但是a是一个负数啊,不存在溢出的问题
并且问一下a是怎么存储的
...全文
176 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
OenAuth.Core 2008-10-11
  • 打赏
  • 举报
回复
晕,没认真看,LS有理
OenAuth.Core 2008-10-11
  • 打赏
  • 举报
回复

a+b十进制:1074003967
十六进制:4003ffff
没有溢出。
wuyu637 2008-10-11
  • 打赏
  • 举报
回复
溢出。不止是说2个正数相加,由于第一位被加成了1,从而变成负数,

011111111
+000000001
------------
100000000
----------->变成负数,这个叫做溢出。

100011111
+011100001
----------
1000000000 --------》 第一个1,由于位数的原因不存了。

所以结果是000000000.这个情况也叫做溢出。

64,642

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧