跳转到内容

图书馆:除以四

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

{{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=清华大学出版社}}