2008年8月20日 星期三

乘數表

前幾個月,我接到一個‘order’,但沒錢收的,因下單人是老婆大人。

沒關係,難度屬低級,工時約一小時,大部份時間用在‘砌Screen’。這是甚麼,是個訓練人‘背’乘數表的程式,就是拿兩個單位數出來,使用者便要輸入它們的積。當然,還有些特別要求,例如記錄成積和多出某個數字等等。

現代教育似乎有‘背書恐懼症’,但很多東西都是唔背唔得,乘數表和古文就是好例子。

電腦祗是包裝,乘數表除了‘背’或‘不停重覆’外,我真是想不出其他辦法!

人是很聰明的,0和1可以不背,其實就祗有64項(註一)需要背的。但這64項對很多小朋友來說實在經已非常吃力。其中一個原因就是否定了有些東西是必要‘強記’的事實。乘數表可理解的部份少,‘強記’成份多!

但對電腦來說,100條的乘數規則實在太多,特別是從幾十年前的電子技術水平來說!後來科學家便想出一個辦法,就是二進制。

人類社會最流行的便是十進制,這就是說我們有十個數字(不要算漏零),超過十便進一。對人來說,這是好端端的。但如上文所述,理論上,任何有序運算(non-commutative operation)都要學習一百條法則。

但對數學家來說,‘十’並沒有甚麼特別,其實n進制都是可能的。這裏n是整數,當然負數沒有意義,0和1都沒有意義,所以n最小便是2了。可以想像,n越小,操作便越簡單,所以,電腦科學家便選了n最小的2進制。

若人是用2進制的,小朋友便沒有背乘數表的必要了,請看下表

0 x 0 = 0
0 x 1 = 0
1 x 0 = 0
1 x 1 = 1

這便是2進制的‘乘數表’!你可能會說,根本不是4條法則,總結成一句,就是 1 x 1 = 1其餘都等如 0。全對!

單從法則的角度出發,二進制的加法,還要比乘法複雜,因為 1 + 1 = 10,這便是進位,十進制的乘法經常要進位,但2進制的乘法就絶無進位!

但為甚麼我們不學電腦,改用2進制呢?操作簡單的代價,就是位數的加長,相同的數字,用2進制表達的位數,可多至十進制的3倍多(註二)。例如1000在十進制是四個位,但2進制就是1111101000,即10位。而9999就是10011100001111,即14位。

‘伙記埋單。’(註三)

‘先生,多謝110011001元!’

若你可以用心算計出,這是409元,你就非常厲害。廿年前,我可以用心算轉換16位以內的二進制數字到10進制。但今天,8位都有點吃力了!

註一:若把乘法是commutative (例如8x9 = 9x8,或更準確的ab=ba)考慮在內,實在要記的便是32條法則。

註二:理論上是約3.32倍,但可以理解,1000是4個位,9999也是4個位,小數部份便解釋了其差異。

註三:‘服務員,請結賬。’

1 則留言:

Unknown 提到...
網誌管理員已經移除這則留言。

網誌存檔