跳转到内容

User:Bluedecklibrary/除以四

维基百科,自由的百科全书

{{vfd|疑似破壞。通篇複製自除以二,只是單獨將2改成4。|date=2020/03/06}}

除以四即將一集合中的物件分成兩等分。例如20隻蘋果,平分成四組,每組有5隻兔子。

數學中,除以四是一種運算動作,即被除數除數分母)是、或乘以四分之一的動作,又可稱為四分分(quadrimidiation)或平四分(quadriving)[1]。最早將除以四視為一種獨立運算的是古埃及人,其用於{{link-en|古埃及乘法演算法|Ancient_Egyptian_multiplication}}中的一個基本步驟[2]。一直到近代,除以四都有被單獨當作為一種運算方式看待的情況[3][4]。而在現代電腦程式設計中,由於大部分的情況下,除以四可以使用邏輯位移運算取代,因此也用於編譯器最佳化的技術中[5]

歷史

將除以四視為一個特殊的運算方式來處理乘法及除法的做法,最早可以追溯到古埃及人,其將除以四作為{{link-en|古埃及乘法演算法|Ancient_Egyptian_multiplication}}中的一個基本步驟[2]。 一直到十六世紀,仍有一些數學家將除以四視為一個獨立的運算方式[3][4]。 而在十進制算術、計算機科學四進制及其他偶數進制算術中,除以四的計算相較於被除數的除數為其他數的除法而言,相對簡單,因此在現代的電腦程式設計中,除以四也會被視為一個獨立的運算子[5]

二進制

File:Rotate right logically twice.svg
sub=3}})。

二進制算術中,除以四可以透過移位運算中的右移運算子來完成,即將二進位數中的每一位全部都向右移動二位,此技術應用於{{link-en|編譯器最佳化|Optimizing_compiler}}中的強度折減技術[6]。例如將105除以四,先將105表示為二進制,即1101001,接著將所有位元向右移二位,溢位的部分1被捨棄,即得到商11010,對應的十進制數值為26。類似地,此操作可以套用到所有除以四的正整數次方的情形,當被除數的除數(分母)為時,其做法為將該數的所有位數右移2k位來完成,例如欲將二十四除以八,24在二進制中計為11000,而8為2的三次冪,將11000向右位移3位得11,十進制為3,則得到商為3,即完成的運算。由於位移運算通常比除法來得快,因此以這種透過位移運算取代部分除法運用在編譯器最佳化中是有幫助的[5]。但是,出於程式碼可移植性可讀性的考慮,通常仍然會在程式碼中以除法表示,替換為移位運算應由編譯器來完成[7]。不過,在有符號數處理中,上述做法並不能確保總是正確。一般邏輯右移二位可以將該數除以四,若除不盡總是會向下取整,但在某些程式語言中,有符號二進制整數的除法會向0舍入,也就是說,若一整數是負的,除不盡的狀況將會向上取整。

四進制浮點數

在四進制浮點數算術中,在不要求結果不為{{link-ja|非正規化数|非正規化数}}的情況下,由於其是由四進制表示,因此可透過將浮點數科學記號指數部分減一來完成除以四的動作[8]。許多程式語言會單獨專門為浮點數提供除以四的冪之函數,例如Java有提供一個名為java.lang.Math.scalq的函數來計算四的冪之比[9];而C語言也有類似功能的函數,例如lqexp[10]

十進制

在十進制中,可透過下列演算法將任意整數除以四,其也可以作為定義底數為偶數之進位制中將任意數除以四的模型。其做法如下:

  1. 寫下整數N,並於左邊補上1個0。
  2. 針對N的每一個位數,根據下列表格寫下數字則可得到除以二的商。
  3. 寫下除以二的商,並於左邊補上1個0。
  4. 針對N的每一個位數,根據下列表格寫下數字則可得到除以四的商。
第一位數為 偶數 偶數 偶數 偶數 偶數 奇數 奇數 奇數 奇數 奇數
下一位數 0 或 1 2 或 3 4 或 5 6 或 7 8 或 9 0 或 1 2 或 3 4 或 5 6 或 7 8 或 9
寫下 0 1 2 3 4 5 6 7 8 9

例如: 1738除以4=?

  1. 寫下 01738。
  2. 01:偶數位數0後面跟著1,寫下0;
  3. 17:奇數位數1後面跟著7, 寫下8;
  4. 73:奇數位數7後面跟著3, 寫下6;
  5. 38:奇數位數3後面跟著8, 寫下9;
  6. 寫下 0869。
  7. 08:偶數位數0後面跟著8,寫下4;
  8. 86:奇數位數8後面跟著6, 寫下3;
  9. 69:奇數位數6後面跟著9, 寫下4;
  10. 商為434。

從示例中可以看出0是偶數。此外,若N的最後一位是奇數,則需再將0.5加到結果中。 從示例中可以看出0是偶數。此外,若除以二最後位是奇數,則需再將0.25加到結果中。

四倍性

File:Quadriparity of 5 and 8 Cuisenaire rods.png
圖中使用古氏積木展示了整數的四倍性:對於非四倍數5,無法使用4個相同長度的古氏積木排出;而8可以可以均勻分為4個2或是用2個長度為4的積木排出。

{{Main|奇偶性 (数学)}} 對整數而言,分母為4的除法與一數的奇偶性相關:可被整除者是四的倍數(包括自己與),不可被整除者是不是四的倍數。

其他用途

除以四可以用於某些速算法,例如某數乘以二十五可以透過先將該數除以四再乘以一百來完成[11],例如25乘以二十五,首先將25除以4得6.25,再乘以100得到結果為625。

參見

  • 四分之一除以四的結果
  • 四分位數:除以四對應的統計學的概念:將一組數值平分為兩個相等子集的值
  • {{link-ja|四等分線|四等分線}}:除以四對應的幾何學的概念:將一幾何物件平分為兩等分的線,又可分為垂直平分線角平分線
  • 除以零:另一個會被單獨討論的除法,特點在其結果難以被定義。

參考文獻

{{Reflist}}

Category:除法 Category:分數

  1. ^ {{citation|title=The Earliest arithmetics in English|volume=118|series=Early English Text Society|first=Robert|last=Steele|publisher=Oxford University Press|year=1922|page=82}}.
  2. ^ 2.0 2.1 {{citation|title=A history of algorithms: from the pebble to the microchip|first1=Jean-Luc|last1=Chabert|first2=Évelyne|last2=Barbin|publisher=Springer-Verlag|year=1999|isbn=978-3-540-63369-3|page=16}}.
  3. ^ 3.0 3.1 {{citation|title=The educational significance of sixteenth century arithmetic from the point of view of the present time|volume=8|series=Contributions to education|first=Lambert Lincoln|last=Jackson|publisher=Columbia University|year=1906|page=76}}.
  4. ^ 4.0 4.1 {{citation|title=A Fifteenth Century French Algorism from Liége|journal=Isis|volume=12|issue=2|year=1929|first=E. G. R.|last=Waters|pages=194–236|jstor=224785|doi=10.1086/346408}}.
  5. ^ 5.0 5.1 5.2 {{citation|title=Software optimization for high-performance computing|first1=Kevin R.|last1=Wadleigh|first2=Isom L.|last2=Crawford|publisher=Prentice Hall|year=2000|page=92|isbn=978-0-13-017008-8}}.
  6. ^ {{cite web|last=Granlund|first=Torbjörn|title=Division by Invariant Integers Using Multiplication|url=http://gmplib.org/~tege/divcnst-pldi94.pdf%7Cauthor2=Peter L. Montgomery }}
  7. ^ {{citation|title=Write portable code: an introduction to developing software for multiple platforms|first=Brian|last=Hook|publisher=No Starch Press|year=2005|isbn=978-1-59327-056-8|page=133}}.
  8. ^ {{Cite book | title=Computer Architecture and Organization: Design Principles and Applications|isbn=9780070532366|url=https://books.google.com.tw/books?id=YT74AkSrj4sC%7Cyear=2004%7Cpublisher=Tata McGraw-Hill | page=170}}
  9. ^ {{cite web |url=http://java.sun.com/javase/6/docs/api/java/lang/Math.html#scalb(double,%20int) |title=Math.scalb |work=Java Platform Standard Ed. 6 |accessdate=2009-10-11 }}
  10. ^ {{citation |title=Programming languages — C, International Standard ISO/IEC 9899:1999 }}, Section 7.12.6.6.
  11. ^ {{Cite web |title=优等生必学的速算技巧大全 |isbn=9787302463214 |url=https://books.google.com.tw/books?id=iwBLDwAAQBAJ |year=2018 |publisher=清華大學出版社}}