除以二

在數學中,除以二是一種運算動作,即被除數的除數(分母)是二、或乘以二分之一的動作,又可稱為半分(dimidiation)或平分(halving)。最早將除以二視為一種獨立運算的是古埃及人,其用於中的一個基本步驟。
一直到十六世紀,仍有一些數學家將除以二視為一個獨立的運算方式。
而在十進制算術、計算機科學的二進制及其他偶數進制算術中,除以二的計算相較於被除數的除數為其他數的除法而言,相對簡單,因此在現代的電腦程式設計中,除以二也會被視為一個獨立的運算子。

二進制
在二進制算術中,除以二可以透過移位運算中的右移運算子來完成,即將二進位數中的每一位全部都向右移動一位,此技術應用於編譯器最佳化中的強度折減技術。例如將105除以二,先將105表示為二進制,即1101001,接著將所有位元向右移一位,溢位的部分1被捨棄,即得到商110100,對應的十進制數值為52。類似地,此操作可以套用到所有除以二的正整數次方的情形,當被除數的除數(分母)為2^k時,其做法為將該數的所有位數右移k位來完成,例如欲將二十四除以八,24在二進制中計為11000,而8為2的三次冪,將11000向右位移3位得11,十進制為3,則得到商為3,即完成的運算。由於位移運算通常比除法來得快,因此以這種透過位移運算取代部分除法運用在編譯器最佳化中是有幫助的。不過,在有符號數處理中,上述做法並不能確保總是正確。一般邏輯右移一位可以將該數除以二,若除不盡總是會向下取整,但在某些程式語言中,有符號二進制整數的除法會向0舍入,也就是說,若一整數是負的,除不盡的狀況將會向上取整。
除以2k
邏輯右移可以處理除數(或分母)為任意二的冪的除法,即除以2^k。例如、等。更一般地,在特定底數base的進位制中,除數(或分母)為任意base^k的除法(k為整數)皆可以透過將數字位數向右移k位來完成。例如,由於普遍的數字計法是透過十進制表達,因此可以直接將數字位數向右移1位來完成除以十的操作。例如230除以十,將230向右移一位,得23,即。

二進制浮點數
在二進制浮點數算術中,在不要求結果不為的情況下,由於其是由二進制表示,因此可透過將浮點數科學記號的指數部分減一來完成除以二的動作。許多程式語言會單獨專門為浮點數提供除以二的冪之函數,例如Java有提供一個名為java.lang.Math.scalb的函數來計算二的冪之比;而C語言也有類似功能的函數,例如ldexp。

十進制
在十進制中,可透過下列演算法將任意整數除以二,其也可以作為定義底數為偶數之進位制中將任意數除以二的模型。其做法如下:
#寫下整數N,並於左邊補上1個0。
#針對N的每一個位數,根據下列表格寫下數字則可得到除以二的商。

例如: 1738除以2=?

寫下 01738。

01:偶數位數0後面跟著1,寫下0;

17:奇數位數1後面跟著7, 寫下8;

73:奇數位數7後面跟著3, 寫下6;

38:奇數位數3後面跟著8, 寫下9;

商為0869。

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

奇偶性
展示了整數的奇偶性:對於奇數5,無法使用2個相同長度的古氏積木排出;而6可以可以均勻分為2個3或是用3個長度為2的積木排出]]

對整數而言,分母為2的除法與一數的奇偶性相關:可被2整除者是偶數(包括2自己與0),不可被2整除者是奇數。

其他用途
除以二可以用於某些速算法,例如某數乘以五可以透過先將該數除以二再乘以十來完成,例如25乘以五,首先將25除以2得12.5,再乘以10得到結果為125。

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

參考文獻

评论 (0)

  • 还没有评论,来抢沙发吧。