130 likes | 295 Views
補充教材 二進位. 十進位. 362 → 「三百六十二」 815 → 「八百一十五」 更精準的說 362 是 3*10 2 +6*10 1 +2*10 0 ,即 3*100+6*10+2 815 是 8*10 2 +1*10 1 +5*10 0 ,即 8*100+1*10+5 稱為十進位表示法,因為採用 10 的次方 人有 10 根手指頭. 二進位. 電腦的內部元件是開關,其狀態不是開 (on) 就是關 (off) 最多只能算到二,無法算到十 只用開 / 關兩值表示數字時,只有數字 0 和 1 的數字系統是理想的
E N D
十進位 • 362 →「三百六十二」815 → 「八百一十五」 • 更精準的說362是3*102+6*101+2*100,即3*100+6*10+2815是8*102+1*101+5*100,即8*100+1*10+5 • 稱為十進位表示法,因為採用10的次方 • 人有10根手指頭
二進位 • 電腦的內部元件是開關,其狀態不是開(on)就是關(off) • 最多只能算到二,無法算到十 • 只用開/關兩值表示數字時,只有數字0和1的數字系統是理想的 • 比照以十為基數的系統,二進位數字1101為1*23+1*22+0*21+1*20,即1*8+1*4+0*2+1等於十進位系統的13
Bit與Byte • 一個二進位數字通常稱為位元(bit) • 8個位元(bits)稱為一個位元組(byte)
十六進位 • 對於很大的二進位數字,如:1111 0101 1011 1001 1110 0001在實用上有問題,需要更經濟的寫法 • 若採用十進位表示,換算極麻煩 • 較簡單的方法是採用十六進位
十六進位 • 將二進位數字從右邊開始,每4位二進位數字一群,將每一群轉成相等的十六進位數字 • 1111 0101 1011 1001 1110 0001其十六進位是:F 5 B 9 E 1十進位值為:15*165+5*164+11*163+11*162+14*161+1*160結果是:16,103,905
負值的二進位數字 • 最左一位的二進位數字視為正負位元(sign bit) • 因為電腦記憶體是由位元組(byte)構成,所以先確定數字是8位元(bits)、16位元(或其他),就可找出正負位元 • 若正負位元為0,則表示正數,若為1則表示負數 • 似乎解決了,其實不然
使用正負位元的二進位數字 • 不能正確運作的例子12的二進位式 0000 1100-8的二進位式,假設是 1000 1000 • 若將兩數相加,得到 1001 0100 • 似乎得到的結果是-20,絕不是+4
負值的二進位數字 • 電腦如何表示-8,先將+4減去+12+4的二進位式 0000 0100 +12的二進位式 0000 1100 • 若將兩數相減,得到 1111 1000 • 這結果是-8,即使看起來不像,但它的確是 • 試試看將此數和二進位的+12或+15相加,就知道它是可行的
2補數(two’s complement) • 如果需要-8的2補數式從+8的二進位式開始 0000 1000將每個數翻轉(0→1,1→0) 1111 0111稱為1補數形式,再將此值加1即得2補數形式 1111 1000 • 為了安全起見,再將-8加+12 +12的二進位式 0000 1100 -8的二進位式 1111 1000若將兩者相加,得到 0000 0100 • 答案是4