| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 796 人关注过本帖
标题:请教一个简单的问题 关于数据溢出
取消只看楼主 加入收藏
gxikings
Rank: 1
等 级:新手上路
帖 子:11
专家分:3
注 册:2009-10-29
结帖率:50%
收藏
已结贴  问题点数:20 回复次数:0 
请教一个简单的问题 关于数据溢出
请各位高手,讲解一下关于数据溢出的原理。

#include "stdio.h"
main()
{
     int a,b;
     a=32767;
     b=a+1;
     
      printf("%d,%d",a,b);
}
以此题为例。  用TC2.0来运行。

我们都知道,在TC2.0中,整型的取值范围是2的15次方到2的15次方-1,那么也就是-32768~32767,数据溢出,是根据在内存中的2进制形式造成的。整形是2个字节,也就是16位,能表示的最小数为:10000000000 (即-32768),能表示的最大数为:0111111111111111(即32767),注:最高位为符号位。当32767+1之后,2进制也就变成了1000000000000000,那么我们能看出来,就是-32768,可是,怎么算出来的呢??

我要的是步骤。
负数是以补码存放的。 补码=原码的反码+1   ;   请高手,帮我写一下运算的过程。

[ 本帖最后由 gxikings 于 2010-3-9 17:22 编辑 ]
搜索更多相关主题的帖子: 数据 
2010-03-09 17:20
快速回复:请教一个简单的问题 关于数据溢出
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.011792 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved