學習二進位制,最好的方法就是模擬。
考慮乙個十進位制小數0.123,我們可以用「乘10取整」法得到它的每一位小數:第一位小數是0.123*10=1.23,取整數1;第二位小數:0.23*10=2.3,取整數2……
上面的方法供你直觀理解,下面我從數學的角度分析其中的原理。
現在有乙個十進位制小數為0.625,要把它轉換為二進位制小數,我們需要找到它的每一位。記這個二進位制小數點後第1位是a1,第二位是a2,……,那麼這個小數的值就是a1*(1/2)^(-1)+a2*(1/2)^(-2)+a3*(1/2)^(-3)+…。現在我們的目標是根據0.625找到對應的a1,a2,a3,…使得0.625=a1*(1/2)^(-1)+a2*(1/2)^(-2)+a3*(1/2)^(-3)+…
在等式兩邊同時乘以2,得到1.25=a1*(1/2)^(0)+a2*(1/2)^(-1)+a3*(1/2)^(-2)+…
我們發現,左邊的整數部分1對應右邊的a1,也就是二進位制小數的第一位,於是a1=1,對於剩下的部分:
0.25=a2*(1/2)^(-1)+a3*(1/2)^(-2)+…
我們再次乘以2,得到0.5=a2*(1/2)^(0)+a3*(1/2)^(-1)+… 於是a2=0
再乘以2,得到1=a3*(1/2)^(0)+…, 於是a3=1,到這裡,所有的數都消耗完了,我們找到了0.625對應的二進位制小數:0.101
關於erlang的向上取整和向下取整
在erlang的api中,erlang trunc 1 是就近取整,erlang round 1是四捨五入的,1 向上取整 2 ceil n 3 t trunc n 4case n t of 5true t 6false 1 t 7end.1 向下取整 2 floor x 3 t trunc x 4...
php四捨五入法, 進一取整法,舍去取整法
round 四捨五入法 echo round 3.4 3 echo round 3.5 4 echo round 3.6 4 echo round 3.6,0 4 echo round 1.95583,2 1.96 echo round 1241757,3 1242000 echo round 5....
除2取餘法
要求 給乙個十進位制數n,求出n二進位制各個數字的和 方法 除以2取餘法,將值相加即可 include using namespace std intmain cout ans endl return0 eg 6 110,有2個1 1023 1111111111,有10個1。如果把每位的數值做標記 ...