第一次寫博客,沒什麼經驗,會保持更新的,文章也會不斷優化的,請你們多多指教函數
現代計算機存儲和處理的信息以二值表示,也便是隻包含0和一的二進制數字,其中整數表示的方法分爲有符號整數、無符號整數。經常使用的數字表示方法有二進制、十進制、八進制、十六進制。下表爲十六進制、十進制、和二進制的對應表示法。優化
十六進制 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | A | B | C | D | E | F |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
十進制 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 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));io
如下爲我的理解,先舉個例子:table
十進制表示 | 小數值 | 二進制表示 |
---|---|---|
1 | 1 | 000001 |
0.5 | 1/2 | 00000.1 |
0.25 | 1/4 | 0000.01 |
0.125 | 1/8 | 000.001 |
0.75 | 3/4 | 0000.11 |
1.5625 | 25/16 | 01.1001 |
∉εεεεεεεε
仔細看就會返現一個規律:
1的二進制表示爲:000001,除以8,即2^3
3的二進制表示爲:000011,除以4,即2^2
25的二進制表示爲:011001,除以16,即2^4
沒錯,整數減小一倍,二進制中小數點右移一位,若是整數增長一倍,則二進制中小數左移一位class
目前全部的計算機都支持的表示浮點數的標準
V = (-1)^s * M * 2^E二進制
最多見的單精度浮點格式float32位:s 1位,exp k=8位,frac n = 23位。
雙精度浮點格式double:s 1位, exp k = 11位,frac n = 52位。float