變量
變量聲明定義
聲明不分配存儲空間,定義分配存儲空間,廣義上講定義是聲明的一種特殊形式。
不同類型常量的表示
10 整型
10l 10L 長整型
10ll 10LL 長長整型
10ul 10UL 無符號長整型
10ull 10ULL 無符號長長整型
010 八進制8
0x10 十六進制16
整型變量的取值范圍
在計算機中數(shù)是以補碼的形式存在的,糾其原因是為了方便進行運算。正數(shù)的補碼和原碼相同,負數(shù)的補碼等于其絕對值的原碼取反后加1(符號位保持不變)。下面就來說明為什么用補碼方便運算:
以8位2進制數(shù)來舉例說明,對于8位有符號2進制數(shù),最高位為符號位,設(shè)
N為負數(shù),
則
|N|為正數(shù)且
|N| >= 1,
N的補碼為
N的補碼 = 2^7 + 2^7 - 1 - |N| + 1 = 2^7 + 2^7 - |N|,
設(shè)
M為正數(shù),
在計算機中
N+M實際上等于
N的補碼+M即
2^7 + 2^7 - |N| + M = 2^7 + 2^7 + (M - |N|),
1)如果
M > |N|,那么最終運算結(jié)果為
M - |N|,符號位從1變?yōu)?,這是因為N的符號位等于1,可表示為
1000 0000 = 2^7,當(dāng)再加上2^7后,將變?yōu)?,即
1000 0000
+
1000 0000
= 1
0000 0000,1被舍棄了。
2)如果
M < |N|,那么最終運算結(jié)果為
2^7 + 2^7 - (|N| - M),即等于
-(|N| - M)的補碼,也就是
-(|N| - M)了。
3)如果
M = |N|,那么最終運算結(jié)果為0,溢出位被舍棄了,這與
M > |N|的情況類似。
當(dāng)
M也為負數(shù)的時候,雖然符號位相加,最高位變?yōu)?,但由于非符號位相加也存在溢出現(xiàn)象,符號位又變回了1,即負數(shù)加上負數(shù)還是負數(shù),這是合理的。用公式表示如下,
N的補碼 + M的補碼 = 2^7 + 2^7 - |N| + 2^7 + 2^7 - |M| = 2^7 + 2^7 - (|N| + |M|),
即等于
-(|N| + |M|)的補碼。
當(dāng)然正數(shù)與正數(shù)相加就很好理解了。
通過以上分析,我們可知在計算機中使用補碼進行運算,是很方便的,即使得計算機可以像普通的四則運算一樣進行加減乘除等運算。
本文版權(quán)歸傳智播客C++培訓(xùn)學(xué)院所有,歡迎轉(zhuǎn)載,轉(zhuǎn)載請注明作者出處。謝謝!
作者:傳智播客C/C++培訓(xùn)學(xué)院
首發(fā):http://m.fskzgqt.cn/c/