十進位制 轉換為 二進位制

2022-09-05 05:06:10 字數 1600 閱讀 2135

聽說優酷前端面試有問進製數轉換的,甚至是負正整數轉換為二進位制,那就索性一次整個明白~

正整數轉二進位制、負整數轉二進位制、小數轉二進位制

1、  正整數轉成二進位制。

口訣:除二取餘,倒序排列,高位補零。

42 除以2得到的餘數(右邊)為010101,然後倒著排一下就是取到的二進位制了(如下圖)

計算機內部表示數的位元組單位是定長的,如8位,16位,或32位。所以,位數不夠時,高位補零,所說,如圖3所示,42轉換成二進位制以後就是。00101010,也即規範的寫法為(42)10=(00101010)2

2、  負正整數轉成二進位制。

先是將對應的正整數轉換成二進位制後,對二進位製取反,然後對結果再加一。還以42為例,負整數就是-42,如圖4所示為方法解釋。最後即為:(-42)10=(11010110)2.

2、  小數轉成二進位制。

對小數點以後的數乘以2,有乙個結果吧,取結果的整數部分(不是1就是0嘍),然後再用小數部分再乘以2,再取結果的整數部分……以此類推,直到小數部分為0或者位數已經夠了就ok了。然後把取的整數部分按先後次序排列就ok了,就構成了二進位制小數部分的序列,舉個例子吧,比如0.125,如圖5所示。

如果小數的整數部分有大於0的整數時該如何轉換呢?如以上整數轉換成二進位制,小數轉換成二進位制,然後加在一起就ok了,如圖6所示。

首先將二進位制數補齊位數,首位如果是0就代表是正整數,如果首位是1則代表是負整數。

先看首位是0的正整數,補齊位數以後,將二進位制中的位數分別將下邊對應的值相乘,然後相加得到的就為十進位制,比如1010轉換為十進位制,方法如圖7所示。

若二進位制補足位數後首位為1時,就需要先取反再換算:例如,11101011,首位為1,那麼就先取反吧:-00010100,然後算一下10100對應的十進位制為20,所以對應的十進位制為-20,方法如圖8所示。

有小數的二進位制轉換為十進位制:例如0.1101轉換為十進位制的方法:將二進位制中的四位數分別於下邊(如圖9所示)對應的值相乘後相加得到的值即為換算後的十進位制。

(string)十進位制 轉換為 二進位制

將乙個長度最多為30位數字的十進位製非負整數轉換為二進位制數輸出。輸入描述 多組資料,每行為乙個長度不超過30位的十進位製非負整數。注意是10進製數字的個數可能有30個,而非30bits的整數 輸出描述 每行輸出對應的二進位制數。輸入 013 8輸出 0111 1000 下面是王道上的解法,模擬的是...

035 十進位制轉換為二進位制

例 輸入乙個十進位制正整數,將其轉換為二進位制輸出。核心演算法 十進位制轉換為二進位制,可參考 二 八 十 十六進製制轉換 分析 將一串未知數字按照某種指定順序輸出時,可以考慮先將每個數字分別存入陣列中,通過陣列下標來確定位置再輸出 注意 int型佔16個二進位制位 二進位制數的最高位是符號位,不參...

將十進位制轉換為二進位制

問題 將任一十進位制整數轉換為二進位制形式。方法一分析 將十進位制轉換為二進位制的方法很多,本方法利用c語言能夠對位進行操作的特點。對於c語言來說,乙個整數在計算機內就是以二進位制形式儲存的,所以沒有必要再將乙個整數經過一系列運算轉換為二進位制形式,只要將整數在記憶體中的二進位制表示輸出即可。源程式...