您的位置:首页 > 其它

special situation——两个short型变量相加超出short的表示范围

2009-12-21 19:15 260 查看
  short型所能表示的数的个数为(32位机器):2^16 = 65536。若为unsigned short表示范围为:0到65535。若为有符号的,表示范围为:-32768到32767,当为32767时,符号位为0,其余15位为1;当为-32767时,符号位为1,其余15位为1;因为是有符号数,所以有正0和负0之分,负零用于表示-32768。

  下面是一段测试程序,通过输出结果可以看出这个special situation的处理情况。

1 #include <iostream>
2 #include <fstream>
3 #include <cstdlib>
4
5 using namespace std;
6 int main(int argc, char *argv[])
7 {
8 short s1 = 32767;
9 short s2 = 1;
cout << "s1 = " << s1
<< " s2 = " << s2
<< endl;
short sum = s1 + s2;
cout << "Sum of s1 and s2 is " << sum << endl;

s1 = sum - s2;
cout << "Is s1 is as the old value? s1 = " << s1 << endl;
system("pause");
return 0;
}

s1=32767



s1=32768



s1=32769



s1=32770



如果不明白的话,可以参考这个随笔“原码、反码、补码,计算机中负数的表示/article/6382916.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐