在學校的時候,教科書上教過如何求得乙個數的二進位制如何表示,但是求解過程有囉嗦又麻煩。
我用我自己的方法,這個方法比較笨,但是夠簡單。
演算法很簡單。
舉個例子,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右移一位可以...