第一次寫部落格,沒什麼經驗,會保持更新的,文章也會不斷優化的,請大家多多指教
現代計算機儲存和處理的資訊以二值表示,也即是只包含0和一的二進位制數字,其中整數表示的方法分為有符號整數、無符號整數。常用的數字表示方法有二進位制、十進位制、八進位制、十六進製制。下表為十六進製制、十進位制、和二進位制的對應表示法。
十六進製制01
2345
6789
abcd
ef十進位制012
3456
78910
1112
1314
15二進位制
0000
0001
0010
0011
0100
0101
0110
0111
1000
1001
1010
1011
1100
1101
1110
1111
b2u() 為將二進位制數轉換為無符號數的函式
b2u[0001] = 0 * 2^3 + 0 * 2^2 + 0 * 2^1 + 1 * 2^0 = 1;
b2u[0101] = 0 * 2^3 + 1 * 2^2 + 0 * 2^1 + 1 * 2^0 = 5;
b2u[0001] = 0 * 2^3 + 0 * 2^2 + 0 * 2^1 + 1 * 2^0 = 1;
b2u[0001] = 0 * 2^3 + 0 * 2^2 + 0 * 2^1 + 1 * 2^0 = 1;
設計算機為w位(上為4位,現在計算機一般為64位),則可以表示最大無符號整數為:(2^w - 1),最小為:0;b2t[0001] = 0 * 2^3 + 0 * 2^2 + 0 * 2^1 + 1 * 2^0 = 1;
b2t[0101] = 0 * 2^3 + 1 * 2^2 + 0 * 2^1 + 1 * 2^0 = 5;
b2t[1011] = -1 * 2^3 + 0 * 2^2 + 0 * 2^1 + 1 * 2^0 = -5;
b2t[1111] = -1 * 2^3 + 0 * 2^2 + 0 * 2^1 + 1 * 2^0 = -1;
設計算機為w位(上為4位,現在計算機一般為64位),則可以表示最大無符號整數為:(2^(w-1) - 1),最小為:(-2^(w-1));以下為個人理解,先舉個例子:
十進位制表示
小數值二進位制表示11
000001
0.51/2
00000.1
0.25
1/40000.01
0.125
1/8000.001
0.75
3/40000.11
1.5625
25/16
01.1001
∉εεεεεεεε
仔細看就會返現乙個規律:
1的二進位制表示為:000001,除以8,即2^3
3的二進位制表示為:000011,除以4,即2^2
25的二進位制表示為:011001,除以16,即2^4
沒錯,整數減少一倍,二進位制中小數點右移一位,如果整數增加一倍,則二進位制中小數左移一位
目前所有的計算機都支援的表示浮點數的標準最常見的單精度浮點格式float32位:s 1位,exp k=8位,frac n = 23位。v = (-1)^s * m * 2^e
雙精度浮點格式double:s 1位, exp k = 11位,frac n = 52位。
浮點數的表示方法
把乙個數的有效數字和數的範圍在計算機的乙個儲存單元中分別予以表示。這種把數的範圍和精度分別表示的方法,相當於數的小數點位置隨比例因子的不同而在一定範圍內可以自由浮動,所以稱為浮點表示法。在計算機中乙個任意二進位制數n可以寫成 n 2 e.m 其中m稱為浮點數的尾數,是乙個純小數。e是比例因子的指數,...
整數和浮點數
python支援對整數和浮點數直接進行四則混合運算,運算規則和數學上的四則運算規則完全一致。基本的運算 1 2 3 6 4 5 6 14 7.5 8 2.1 3.0375使用括號可以提公升優先順序,這和數 算完全一致,注意只能使用小括號,但是括號可以巢狀很多層 1 2 3 9 2.2 3.3 1.5...
浮點數的表示
在定點數表示中存在的乙個問題是,難以表示數值很大的資料和數值很小的資料。例如,電子的質量 9 10 28克 和太陽的質量 2 1033克 相差甚遠,在定點計算機中無法直接表示,因為小數點只能固定在某乙個位置上,從而限制了資料的表示範圍。為了表示更大範圍的資料,數學上通常採用科學計數法,把資料表示成乙...