文档库

最新最全的文档下载
当前位置:文档库 > 黑马程序员C语言教程:C基础技术文档

黑马程序员C语言教程:C基础技术文档

黑马程序员C语言教程:C基础技术文档

变量

变量声明定义

声明不分配存储空间,定义分配存储空间,广义上讲定义是声明的一种特殊形式。不同类型常量的表示

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

= 10000 0000,1被舍弃了。

2)如果M < |N|,那么最终运算结果为2^7 + 2^7 - (|N| - M),即等于-(|N| - M)的补码,也就是-(|N| - M)了。

黑马程序员C语言教程:C基础技术文档

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|)的补码。

当然正数与正数相加就很好理解了。

通过以上分析,我们可知在计算机中使用补码进行运算,是很方便的,即使得计算机可以像普通的四则运算一样进行加减乘除等运算。