前一篇我們介紹了模2運算的加減乘除運算 ,雖然,我們了解了模二運算的基本法則,但是,如果每次都要計算,那就未免覺得太繁瑣,所以,這裡我總結了一套自己的運算心得供大家學習。接下來,我們就要講解一下如何基礎演算法中快速實現進製的轉換。
我們求以前求乙個10進製的數轉換成2進製的過程大致如此,用這個十進位制數「除2取餘,逆序排列"法。具體做法是:用2整除十進位制整數,可以得到乙個商和餘數;再用2去除商,又會得到乙個商和餘數,如此進行,直到商為小於1時為止,然後把先得到的餘數作為二進位制數的低位有效位,後得到的餘數作為二進位制數的高位有效位,依次排列起來。如下圖所示:
你會發現,這種方法會有明顯的缺陷,那就是如果這個10進製的數非常大,那麼這樣一直「除二取餘」可能非常的浪費時間,甚至是浪費紙張。那莫有沒有更好的方法實現了,答案肯定是有的,下面就介紹一下我的快速計算使用心得。
首先我們需要背誦2的2到10的冪次方,這個我相信對大家都不難,它們分別是1、 2、4、8、16、32、64、128、 256、 512 、1024。而這些數對應的二進位制分別1、10、 100 、1000 、10000 、100000、 1000000 、10000000、 100000000 、1000000000.
10進製轉2進製
接下來,就是開始心算的時候,比如:
9=8+1 那麼對應的二進位制就是:1001
13=8+4+1 那麼對應的二進位制就是:1101
17=16+1 那麼對應的二進位制就是:10001
34=32+2 那麼對應的二進位制就是:100010
245=128+64+32+16+4+1 那麼對應的二進位制就是:11110101
每次從高位依次往下寫,比如34 從32 往下寫 依次是 16 、8 、4 、2 、1 在該位數上分解的數有該數就寫1,沒有就寫0。
2進製轉10進製
同理,也是從高位開始計算,先數二進位制數比如:
101010 共有6個數,那麼就從2的(6-1)次方開始計算 分別是32,8,2 結果就是:32+8+2=42
100010 共有6個數,那麼就從2的(6-1)次方開始計算 分別是32,2 結果就是:32+2=34
.........
快速 二進位制和十進位制互轉
怎麼才能快速將二進位制與10進製互轉?方法如下 首先需要一張表 n 2 n 128 2 7 64 2 6 32 2 5 16 2 4 8 2 3 4 2 2 2 2 1 1 2 0 一 十進位制轉二進位制 比如十進位制數21,要轉換成2進製的話,就依次從找比21小的2的次方數相加,直到等於21 比2...
二進位制與十進位制相互轉換
我們最常見的進製就是十進位制 滿十進一 當這個數字個位比9大的時候 十位加一 個位歸零 就是 9 之後是 10 19 之後是20 二進位制就是滿二進一 就是 1 的 二進位制 還是1,但是2 的二進位制就是10,3的二進位制就是11,4的二進位制就是100 那如何將十進位制正整數轉換成二進位制呢 比...
十進位制二進位制轉換
一 整形裝換成兩個位元組 int value 456 unsigned char byte1 value 0xff00 8 高8位 unsigned char byte2 value 0xff 低8位 nslog byte1 x byte2 x byte1,byte2 byte1 1 byte2 c...