天天看點

c++二進制轉十進制_二進制與十進制互轉,史上最牛X方法!

十進制轉二進制

相信學過計算機的同學一定對二進制不陌生,計算機底層的通訊就是二進制嘛!二進制由0和1組成,那麼怎麼快速的對一個十進制數轉換成二進制數呢?

最古老的方法大家還記得怎麼轉換嗎?比如35這個十進制數?

c++二進制轉十進制_二進制與十進制互轉,史上最牛X方法!

将這個數除以2,等于17餘1,然後将17再除以2,等于8餘1...直到不能再被2整除,然後将餘數從後往前的順序寫出來就是二進制數100011。

這個是我們上國中時候老師教的,但是太麻煩了,下面我教大家一種新的算法:

學習這個新算法的時候我們首先要了解下2的n次方問題:

c++二進制轉十進制_二進制與十進制互轉,史上最牛X方法!

第一步,我們先把2的n次方倒着寫出來,寫多少呢?根據你要算的這個十進制數的大小,比如35,那你就從32開始往前寫就行了:

32、16、8、4、2、1

從上面這些數裡,我們想算十進制的35,它等于32+2+1,那我就在32、2、1下面标1,其餘的标0:

c++二進制轉十進制_二進制與十進制互轉,史上最牛X方法!

通過上圖,二進制就是100011。簡單不?如果你看懂了,你就試試其他的數吧。

二進制轉十進制

十進制轉二進制我們剛才學會了,那麼二進制怎麼轉十進制呢?是不是有點懵?

假如有一個二進制數100011,怎麼轉換呢,非常簡單!還是先把2的n次方寫下來,寫多少?根據二進制的位數,100011是6位,那我就從後往前數6位寫下來:

c++二進制轉十進制_二進制與十進制互轉,史上最牛X方法!

然後把這個二進制數從前往後依次寫在十進制數上:

c++二進制轉十進制_二進制與十進制互轉,史上最牛X方法!

最後把上标為1的加在一起:

32 + 2 + 1 = 35

是不是很簡單?隻要你記住這幾個數(2的n次方)你就可以快速的十進制二進制互轉。那有的同學問了,如果十進制數是999999999轉換二進制是多少?呵呵哒!這麼大的數你用電腦!你知道怎麼算就行了,有電腦呢