標籤:

請問用c語言怎麼寫出原始的除法運算的函數?就是在不用到"/"的情況下


@白如冰 提及的是利用牛頓法求除數的倒數,再乘以被除數。這種方法適合浮點數除法。迭代次數及初值的評估都有一些現成的計算方法。

另一種需求是整數除法,可以實現長除法。還有一種整數除法,整數除數是常數,這時候可以用整數乘法及右移實現,大部分編譯器都會做這種優化以避免緩慢的整數除法。

各種除法演算法可參考 Division algorithm,一些整數除法方面的優化可參考[1]。

[1] Warren, Henry S. Hacker"s delight. 2nd Edition, Pearson Education, 2012.


抖個機靈,已知c>0,0<x_{0}<frac{1}{c},x_{n+1}=x_{n}(2-cx_{n})

易證{ x_{n}}有上界且遞增,且lim{x_{n}}=frac{1}{c}


你需要學習《計算機組成》

https://www.coursera.org/course/pkuco


這不是csdn有次搞得比賽嘛

基本思路就是用代碼模擬除法運算單元做的事情


最簡單的,你可以寫一段程序,模擬筆算的行為。

效率怎麼樣就看你的功力了。

手開平方根,求π都可以,除法簡直不在話下。


整數當然不難 浮點可以看看libgcc的源程序 裡面一堆軟體浮點函數


答得好像不對題,計算機只用加法和移位就能模擬乘除和減法。


這是Leetcode原題:

Divide Two Integers

隨便百度一下有一堆解答:

leetcode divide two integers_百度搜索


計算機組成原理裡面有,cpu乘法除法運算都是基於加法運算和移位運算完成的


sub,表示差 sum,表示和 mul,表示乘法 div,表示除法 殺雞焉用牛刀!


二分,乘法檢驗


除法本質不就是:被除數能減去除數並且保持大於等於零的次數么?一個while循環搞定了,順便送你一個餘數。


手機打能省就省了,舉個整數代替/的

a是被除數,b是除數則

count7=0

while(a&>=b)

{

a=a-b

count++

}

return count


leetcode原題+1

判符號 除數左移 單位左移

循環:判斷大小,計數器加一單位 除數右移 單位右移

輸出計數器

js的話務必無符號移


位移,減,判斷大小,循環


推薦閱讀:

你做過的最有效的提高你的編程水平的一件事情是什麼?對於那些想提高水平的程序員,你的建議是什麼?
自己寫的程序被殺毒軟體殺了怎麼辦?
體積小的軟體佔用內存就小嗎?
在Linux下,如何強制讓GCC靜態鏈接?
多線程網路編程中如何合理地選擇線程數?

TAG:編程 |