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
下面是一段测试程序,通过输出结果可以看出这个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
相关文章推荐
- 如果给你两个超出int范围的数字相加你会怎么做?
- 大数相加(两个数相加结果大于int能表示的范围时怎么办?)
- 建立类cylinder,cylinder的构造函数被传递了两个double值,分别表示圆柱体的半径和高度。用类cylinder计算圆柱体的体积,并存储在一个double变量中。在类cylinder中包
- 打印分别由signed和unsigned限定的char , short, int ,与long类型变量的取值范围。
- sql server中单引号拼接字符串(书写错误会出现错误"浮点值 XXXX 超出了计算机表示范围(8 个字节)。“XX”附近有语法错误。")
- 两个超大的整数相加(超过long长度范围)
- 整数超出范围时如何表示?
- GridView的HyperLinkField的DataNavigateUrlFormatString如何使用自定义的变量,而不是数据库绑定的值.报错:指定的参数已超出有效值的范围。参数名: index
- 32位系统中short、short int、int、long int、long、long long所表示数值的范围
- Add Two Numbers 把两个以链表形式表示的数相加 @LeetCode
- int、short、char 类型超出范围赋值__说说原码,反码,补码
- int、short、char 类型超出范围赋值__说说原码,反码,补码
- 练习 2-1 编写一个程序以确定分别由 signed 及 unsigned 限定的 char、short、 int 与 long 类型变量的取值范围。
- 编写一个程序以确定分别由signed及unsigned限定的char、short、int及long类型变量的取值范围。采用打印标准头文件中的相应值以及直接计算两种方式实现
- 如果我们使用的整数常量超出了 int 的表示范围
- int、short、char 类型超出范围赋值问题__原码,反码,补码
- 编写一个程序,分别以signed和unsigned限定的char、short、int与long类型的变量取值范围
- 用div控制文字长度,超出范围用...表示
- C++ 带符号和无符号char类型赋值超出表示范围的情况
- int、short、char 类型超出范围赋值