请教一个简单的问题 关于数据溢出
请各位高手,讲解一下关于数据溢出的原理。#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 编辑 ]