变量
变量声明定义
声明不分配存储空间,定义分配存储空间,广义上讲定义是声明的一种特殊形式。
不同类型常量的表示
10 整型
10l 10L 长整型
10ll 10LL 长长整型
10ul 10UL 无符号长整型
10ull 10ULL 无符号长长整型
010 八进制8
0x10 十六进制16
整型变量的取值范围
在计算机中数是以补码的形式存在的,纠其原因是为了方便进行运算。正数的补码和原码相同,负数的补码等于其绝对值的原码取反后加1(符号位保持不变)。下面就来说明为什么用补码方便运算:
以8位2进制数来举例说明,对于8位有符号2进制数,最高位为符号位,设
N为负数,
则
|N|为正数且
|N| >= 1,
N的补码为
N的补码 = 2^7 + 2^7 - 1 - |N| + 1 = 2^7 + 2^7 - |N|,
设
M为正数,
在计算机中
N+M实际上等于
N的补码+M即
2^7 + 2^7 - |N| + M = 2^7 + 2^7 + (M - |N|),
1)如果
M > |N|,那么最终运算结果为
M - |N|,符号位从1变为0,这是因为N的符号位等于1,可表示为
1000 0000 = 2^7,当再加上2^7后,将变为0,即
1000 0000
+
1000 0000
= 1
0000 0000,1被舍弃了。
2)如果
M < |N|,那么最终运算结果为
2^7 + 2^7 - (|N| - M),即等于
-(|N| - M)的补码,也就是
-(|N| - M)了。
3)如果
M = |N|,那么最终运算结果为0,溢出位被舍弃了,这与
M > |N|的情况类似。
当
M也为负数的时候,虽然符号位相加,最高位变为0,但由于非符号位相加也存在溢出现象,符号位又变回了1,即负数加上负数还是负数,这是合理的。用公式表示如下,
N的补码 + M的补码 = 2^7 + 2^7 - |N| + 2^7 + 2^7 - |M| = 2^7 + 2^7 - (|N| + |M|),
即等于
-(|N| + |M|)的补码。
当然正数与正数相加就很好理解了。
通过以上分析,我们可知在计算机中使用补码进行运算,是很方便的,即使得计算机可以像普通的四则运算一样进行加减乘除等运算。
本文版权归传智播客C++培训学院所有,欢迎转载,转载请注明作者出处。谢谢!
作者:传智播客C/C++培训学院
首发:http://www.itcast.cn/c/