詳解二進位制和十進位制的轉換
阿新 • • 發佈:2021-08-09
十進位制轉換二進位制
拆分法
將十進位制整數拆分為若千個二進位制權重的和,有該權重下面寫 1,否則寫 0。
權重等於 10^1~n 次方
拆分出來必須是權重中的數字!
正十進位制轉換為二進位制
求 45 的二進位制
# 權重 1 2 4 8 16 32 64 128 ... 1. 45 最近的權重為 32 2. 45 - 32 = 13 權重為 8 3. 13 - 8 = 5 權重為 4 4. 5 - 4 = 1 的權中為 1 45 => 32, 8, 4, 1 有該權重下面寫1,否則寫0。 1 2 4 8 16 32 64 128 ... 1 0 1 1 0 1 0 0 逆向排序可得二進位制為 0010 1101
負十進位制轉換為二進位制
先將十進位制的絕對值轉換為二進位制,然後進行按位取反再加1
負數的需要補碼:按位取反,再加1
求-45的二進位制
1.將-45的絕對值轉換為二進位制:0010 1101
2.按位取反(通俗來說就是 0 變成 1,1 變成 0)
0010 1101 按位取反 得 1101 0010
3.在末尾加上 1,得 1101 0011 (如果末尾已經是 1 則需要進位)
驗證:
45 和 -45 互為相反數 所以 -45 + 45 = 0
45 => 0010 1101
-45 => 1101 0011
運算:
0010 1101
1101 0011 +
——————————— =
0000 0000
除 2 取餘法
使用十進位制整數不斷地除以 2 取出餘數,直到商為 0 時將餘數逆序排序。
轉換 45 為二進位制
45 / 2 = 22 ... 1
22 / 2 = 11 ... 0
11 / 2 = 5 ... 1
5 / 2 = 2 ... 1
2 / 2 = 1 ... 0
1 / 2 = 0 ... 1
將餘數逆向排序可得:10 1101
二進位制轉換為十進位制
加權法
使用二進位制中的每個數字乘以當前位的權重再累加起來。
權重等於 10^n~1次方
加權必須是權重中的數字!
與正十進位制轉換二進位制 拆分法
是互逆的
轉換 11 0010 十為十進位制
逆向可得 01 0011 # 權重 1 2 4 8 16 32 64 128 ... 0 1 0 0 1 1 0 0 可得 2 + 16 + 32 = 50 11 0010 的二進位制為 50 也可以記為(由 0 位開始) 0 * 2^0 + 1 * 2^1 + 0 * 2^2 + 0 * 2^3 + 1 * 2^4 + 1 * 2^5 0 + 2 + 0 + 0 + 16 + 32 = 50 因為 0 乘任何數都得 0,則可簡化為 2^1 + 2^4 + 2^5 = 2 + 16 + 32 = 50