二進制轉化為十進制最容易懂的方法_第1頁
二進制轉化為十進制最容易懂的方法_第2頁
二進制轉化為十進制最容易懂的方法_第3頁
二進制轉化為十進制最容易懂的方法_第4頁
全文預覽已結束

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

二進制轉化為十進制最容易懂的方法1、二進制轉換為十進制:如果按照傳統(tǒng)的方法,算2的乘方與二進制每一位的積,這樣容易理解,但是在編程過程中,求2的乘法用到的pow函數(shù)是一個double類型的函數(shù),而我們經常用到的是int類型的數(shù),在處理數(shù)據(jù)類型的時候會很麻煩,更甚者會出錯。所以我們換另一種方法,即不用pow函數(shù),用一個初值為1的變量,將這個變量與每一位二進制從后往前相乘,相乘一次后這個變量就乘2。即我們換了一種方法來求2的乘方。代碼如下://res為最終的結果,A數(shù)組儲存二進制的每一位intres=0,temp=1;for(inti=A.length-1;i>=0;i--){ res+=A[i]*temp; temp*=2;}2、十進制轉換為二進制:傳統(tǒng)的方法,將這個數(shù)不斷地取余2,再除以2,直到這個數(shù)變成0。這種方法會改變這個數(shù)的值,而且效率比較低。我們可以用位運算,首先了解兩個位運算符:&和<<其中&運算符表示將兩個數(shù)的二進制按位做與運算,例如5&7,其中5的二進制是101,7的二進制是111,&運算符將他們的二進制按位與,得到的結果即101,即5&7=5。<<運算符是移位運算符,即將一個數(shù)的二進制向左移位,右邊補0,例如5<<3,5的二進制是101,將101向左移3位,末尾補0,結果為101000。即5<<3=40。也可以理解為5<<3=5×(2^3)。而將一個十進制數(shù)轉換為二進制,假設這個數(shù)的二進制有5位,那么我們可以用這個數(shù)與10000,1000,100,10,1這5個二進制數(shù)分別做&運算,求出這個數(shù)的二進制的每一位是1還是0。例如求40的二進制。假設我們知道40的二進制有6位,那就讓他與100000,10000,1000,100,10,1這6個數(shù)分別作&運算:101000&100000=1,即40的二進制的第一位是1101000&010000=0,即40的二進制的第二位是0101000&001000=1,即40的二進制的第三位是1101000&000100=0,即40的二進制的第四位是0101000&000010=0,即40的二進制的第五位是0101000&000001=0,即40的二進制的第六位是0這樣就把40的二進制的每一位取出來了,那么我們接下來就是要生成100000,10000,1000,100,10,1這幾個數(shù),這里就可以用到<<運算符了,100000=1<<5,10000=1<<4,1000=1<<3,100=1<<2,10=1<<1,1=1<<0。代碼如下://count是二進制的位數(shù),假設操作數(shù)不超過64位,binary中儲存他的二進制,不過是倒序的。intcount=0,N=40,j,binary[64]; for(j=0;j<64;j++) { if((1<<j)<N)//如果當前算到的位數(shù)超過了N的位數(shù)時就可以跳出了。 if((N&(1<<j))!=0) binary[count++]=1; elsebinary[count++]=0; elsebreak; }例題:LeetCode137只出現(xiàn)一次的數(shù)字給定一個非空整數(shù)數(shù)組,除了某個元素只出現(xiàn)一次以外,其余每個元素均出現(xiàn)了三次。找出那個只出現(xiàn)了一次的元素。說明:你的算法應該具有線性時間復雜度。你可以不使用額外空間來實現(xiàn)嗎?示例1:輸入:[2,2,3,2]輸出:3示例2:輸入:[0,1,0,1,0,1,99]輸出:99本題難點在于要求不使用額外空間,所以不能使用簡單的加減乘除,應該深入到位運算。首先將數(shù)組中的每個數(shù)都當做二進制來處理,那么他們最多有32位,如果一個數(shù)出現(xiàn)了3次,那么它的二進制中的1也都出現(xiàn)了3次。我們把一個數(shù)分成32位,那么數(shù)組中所有數(shù)的其中某一位出現(xiàn)1的次數(shù)一定是3N或者3N+1。例如數(shù)組中有4個數(shù):5553,他們的二進制分別為:101101101011這三位出現(xiàn)1的次數(shù)分別為314,都滿足

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論