如何求乙個數的二進位制的值

2022-09-15 02:15:12 字數 849 閱讀 2756

在學校的時候,教科書上教過如何求得乙個數的二進位制如何表示,但是求解過程有囉嗦又麻煩。

我用我自己的方法,這個方法比較笨,但是夠簡單。

演算法很簡單。

舉個例子,11表示成二進位制數:

11/2=5   餘   1

5/2=2   餘   1

2/2=1   餘   0

1/2=0   餘   1

得0結束        

11的二進位制表示為(從下往上):1011

這裡提一點:只要遇到除以後的結果為0了就結束了,大家想一想,所有的整數除以2是不是一定能夠最終得到0。換句話說,所有的整數轉變為二進位制數的演算法會不會無限迴圈下去呢?絕對不會,整數永遠可以用二進位制精確表示 ,但小數就不一定了。

演算法是乘以2直到沒有了小數為止。

舉個例子,0.9表示成二進位制數

0.9*2=1.8   取整數部分  1

0.8(1.8的小數部分)*2=1.6    取整數部分  1

0.6*2=1.2   取整數部分  1

0.2*2=0.4   取整數部分  0

0.4*2=0.8   取整數部分  0

0.8*2=1.6   取整數部分  1

0.6*2=1.2   取整數部分  0

.........      0.9二進位制表示為(從上往下): 1100100100100......

注意:上面的計算過程迴圈了,也就是說*2永遠不可能消滅小數部分,這樣演算法將無限下去。很顯然,小數的二進位制表示有時是不可能精確的 。其實道理很簡單,十進位制系統中能不能準確表示出1/3呢?同樣二進位制系統也無法準確表示1/10。這也就解釋了為什麼浮點型減法出現了"減不盡"的精度丟失問題。

求乙個數的二進位制數中1的個數

求乙個數的二進位制數種1的個數 author administrator public class countoneinbinarynum num 2 system.out.println count 解法2 將解法一的除法變為位移運算 public void z2 1 method2 int nu...

二進位制 求乙個數的二進位制表示中1的個數

題目 求乙個正整數x中1的個數 思考 二進位制是乙個01串。統計該串中1的個數。方法1 將x按照樸素的方法轉化成二進位制串,如果x的某二進位制位上為1,則res 求得最後x中1的個數。int x while x return res res即是x的二進位制數中1的個數用這種方法求,時間複雜度為o n...

求乙個數的二進位制從左到右翻轉後的值

在32位機器上25這個值包含下列各位 00000000000000000000000000011001 翻轉後 2550136832 10011000000000000000000000000000 首先要求乙個數的二進位制,然後把它存入陣列中,n 1就是這個數最低位的二進位制,然後把n右移一位可以...