二進位制和十進位制相互轉換的簡便方法

2021-08-28 21:19:01 字數 1348 閱讀 6972

1、二進位制轉換為十進位制:

如果按照傳統的方法,算2的乘方與二進位制每一位的積,這樣容易理解,但是在程式設計過程中,求2的乘法用到的pow函式是乙個double型別的函式,而我們經常用到的是int型別的數,在處理資料型別的時候會很麻煩,更甚者會出錯。所以我們換另一種方法,即不用pow函式,用乙個初值為1的變數,將這個變數與每一位二進位制從後往前相乘,相乘一次後這個變數就乘2。即我們換了一種方法來求2的乘方。**如下:

//res為最終的結果,a陣列儲存二進位制的每一位

int res=0,temp=1;

for(int i=a.length-1;i>=0;i--)

2、十進位制轉換為二進位制:

傳統的方法,將這個數不斷地取餘2,再除以2,直到這個數變成0。這種方法會改變這個數的值,而且效率比較低。我們可以用位運算,首先了解兩個位運算子:&和<<

其中&運算子表示將兩個數的二進位制按位做與運算,例如5&7,其中5的二進位制是101,7的二進位制是111,&運算子將他們的二進位制按位與,得到的結果即101,即5&7=5。

《運算子是移位運算子,即將乙個數的二進位制向左移位,右邊補0,例如5<<3,5的二進位制是101,將101向左移3位,末尾補0,結果為101000。即5<<3=40。也可以理解為5<<3=5×(2^3)。

而將乙個十進位制數轉換為二進位制,假設這個數的二進位制有5位,那麼我們可以用這個數與10000,1000,100,10,1這5個二進位制數分別做&運算,求出這個數的二進位制的每一位是1還是0。例如求40的二進位制。假設我們知道40的二進位制有6位,那就讓他與100000,10000,1000,100,10,1這6個數分別作&運算:

101000&100000=1,即40的二進位制的第一位是1

101000&010000=0,即40的二進位制的第二位是0

101000&001000=1,即40的二進位制的第三位是1

101000&000100=0,即40的二進位制的第四位是0

101000&000010=0,即40的二進位制的第五位是0

101000&000001=0,即40的二進位制的第六位是0

這樣就把40的二進位制的每一位取出來了,那麼我們接下來就是要生成100000,10000,1000,100,10,1這幾個數,這裡就可以用到《運算子了,100000=1<<5,10000=1<<4,1000=1<<3,100=1<<2,10=1<<1,1=1<<0。**如下:

//count是二進位制的位數,假設運算元不超過64位,binary中儲存他的二進位制,不過是倒序的。

int count=0,n=40,j,binary[64];

for(j=0;j<64;j++)

return res;

}}

二進位制和十進位制的相互轉換

1.轉成二進位制主要有以下幾種 正整數轉二進位制,負整數轉二進位制,正小數轉二進位制 負小數轉二進位制 1 正整數轉二進位制 原碼 要點 除二取餘,然後倒序排列,高位補零。也就是說,將正的十進位制數除以二,得到的商再除以二,依次類推知道商為零或一時為止,然後在旁邊標出各步的餘數,最後倒著寫出來,高位...

二進位制和十進位制的相互轉換

請將下列數字轉換為十進位制數 110010011111 2 10110101110 2 156 2608 1043 使用按權展開法將二進位制數轉換為十進位制數,使用短除法除2取餘計算十進位制數轉換為二進位制數。實現此案例需要按照如下步驟進行。1 二進位制數110010011111,轉為十進位制的結果...

二進位制和十進位制的相互轉換

居家隔離這段時間,簡直悶得慌,今天恰好發現了阿里雲大學裡面的課程,決定把linux基礎再鞏固一遍,第一節課學的是計算機基礎,正好搞懂了自己一直以來不太明白的進製轉換 我腦子有點笨,之前總是覺得有點繞 下面呢就是我今天學到的二進位制和十進位制的轉換 所謂n進製轉換,就是到達了n就進一位,如二進位制中,...