二進位與十進位之間蠻好的轉換方式

來源:互聯網
上載者:User

標籤:style   blog   color   for   div   代碼   amp   log   

假如給你一個二進位 1101101010101  問你轉換成10進位是多少  反正 我第一想到的是用2的k次方 這樣算

其實完全不用 用如下代碼 就可-------我們假設以 字串來接受這個二進位 一般我們也都是這樣做的

1 for( int i = 0 ; str[i]!=‘\0‘ ; i++ )2 {3     sum = sum*2 + str[i] - ‘0‘;4 }

我們通過這個*2也達到了 k次方這個效果 因為i =0恰恰是 二進位的最高位

 

同樣 當我任意給你一個十進位數字  23421 我想讓你轉換成位元字 有什麼快捷的方法呢?

我們用 val 來代表這個十進位數字 並且將轉換得到的二進位序列 存入str字串數組中去

 1     while(n) 2     { 3         str[cnt++] = (n&1)+‘0‘; 4                 // str[cnt++] = n%2+‘0‘; 5         n >>=1; 6     } 7     for( int i = cnt-1 ; i>=0 ; i-- ) 8     { 9         cout << str[i];10     }

這邊可以有2種寫法 n&1 與n%2  隨便怎麼寫 前者速度會快一點 但是不要忘記了括弧 根據運算子的優先順序

還有就是個 輸出順序 是逆序輸出的 別搞錯了 =-=

感覺 這還是會在比賽中可能蠻有用的

 

today:

  喜歡就是放肆 但愛就是克制

  我還沒讀懂這句話

  這個 愛 是指什麼?

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.