bits陣列轉int,string串也可以,但是vector更省空間,bits的長度應當小於int的長度,即小於等於31位,最高位為符號位。
如果是無符號二進位制串,則函式返回型別為unsigned int,最高位進行運算且不加判斷,bits陣列的長度最大為32位
//二進位制轉10進製
intbits_to_int
(vector<
bool
>bits)}if
(bits[0]
)//負數
result=
-result;
return result;
}
需要注意,二進位制串的最高位是否為符號位取決於他本身是有符號數還是無符號數,比如c++中的unsigned int、unsigned short、unsigned byte等,二進位制的最高位就不是符號位,而int、short、byte的最高位是符號位,彙編中的byte、word、dword為無符號,sbyte、sword、sdword為有符號
正數(原碼)轉負數(補碼):
正數的二進位制為原碼,負數的二進位制為補碼,正數轉負數時一般是取反+1,如5的原碼0000 0101轉-5,先取反:1111 1010(反碼) 再+1:1111 1011(補碼)
更快的方法:從右往左,遇到的第乙個1,把這個1的左邊全部取反,右邊(包括自身)不變,即5的原碼0000 0101,第乙個1就是最右邊的1,那麼把左邊取反,右邊不變:1111 1011
二進位制轉十進位制
二進位制轉十進位制方法很多,如字元陣列,指標法等 下面用字串函式的方法實現 二進位制轉十進位制 主要用 到 string函式性質及pow求乙個數的n次方的函式過載 by adengou 2010.08.04 win7 dev c 5.0 vs 2010 通過 include include incl...
十進位制轉二進位制
includeint dg unsigned n,int c 注意 引數型別是unsigned int main 陣列全部初始化為0 printf d n sizeof int unsigned temp,u temp u 4294967295u int tu int u printf u u,tu...
十進位制轉二進位制
宣告 最後一種降冪法頗具魅力,而且與方法二有異曲同工之妙 十進位制轉二進位制的幾種方法 輸入 乙個無符號的十進位制整數 輸出 對應十進位制的二進位制顯示 例如 input 10,output 1010 方法一 除二取餘法 forinput 0 cout input 2 input 2 end 輸出順...