回覆列表
-
1 # 使用者9791361106732
-
2 # 使用者2458114238191884
你是說轉換成二進位制吧,除以2得到一個數,如果不是商不是1,就記錄下餘數,然後用商再除以2,再記錄下餘數,直到商等於1,然後將記錄到的餘數(包括最後那個商),倒著讀,就是那個十進位制的二進位制數
你是說轉換成二進位制吧,除以2得到一個數,如果不是商不是1,就記錄下餘數,然後用商再除以2,再記錄下餘數,直到商等於1,然後將記錄到的餘數(包括最後那個商),倒著讀,就是那個十進位制的二進位制數
最近嘗試打了個高精度運算的程式。用了一下兩種演算法。
牛頓迭代法:
Xn+1=Xn(2-cXn) (0<X0<1/c) 。
容易得到:Xn的極限為1/c。
這個我是用來解決浮點數的乘法。
關於迭代次數還有精度的確定上還沒想好怎麼弄,所以還沒完全打好。
還有我同學跟我說的一種利用二分的做法(我用來做了帶餘除法)
比如說求100/3.
首先取100,3*100>100.
取50,3*50>100
取25,3*25<100 => ans+=25,此時ans=25.
取12,3*(12+25)>100
取6,3*(25+6)<100 =>ans+=6,此時ans=31.
取3,3*(31+3)>100;
取1,3*(31+1)<100;=>ans+=1;
取1,3*(32+1)<100;=>ans+=1;
此時3*(33+1)>100,退出迴圈。
鑑於我的程式還沒有完全打好。也沒有測過哪一種演算法效率更高。你看著辦吧。
第一次如此認真的回答問題。