怎樣用電腦計(jì)算器計(jì)算二進(jìn)制?
這個(gè)你上了大學(xué),學(xué)了計(jì)算機(jī)電路就知道了。計(jì)算器內(nèi)部主要是通過異或門來實(shí)現(xiàn)加法運(yùn)算的。
邏輯無非就這幾種:非門(NOT)、與門(AND)、或門(OR)、異或門(XOR),其中非門還可以和另外三個(gè)進(jìn)行組合。加法主要是靠異或門實(shí)現(xiàn)的。
計(jì)算機(jī)內(nèi)部為了計(jì)算方便,一律用二進(jìn)制的形式表示數(shù)據(jù),二進(jìn)制是“逢二進(jìn)一”的,只有 0 和 1 兩個(gè)數(shù)字。邏輯上一般把 0 稱為邏輯假,把 1 稱為邏輯真。計(jì)算機(jī)內(nèi)部的加法也只有四條規(guī)則:
0 + 0 = 0
0 + 1 = 1
1 + 0 = 1
1 + 1 = 10(進(jìn)位位 C 為 1,結(jié)果位為 0)
而這個(gè)規(guī)則正是使用異或門實(shí)現(xiàn)的。異或門(A XOR B)是指:只有 A 和 B 的狀態(tài)為一真一假時(shí),才返回真。若 A 和 B 同時(shí)為真或者同時(shí)為假,則返回假。那么你看看,上面的四條加法規(guī)則,是不是完全滿足異或門的定義?
對于進(jìn)位位,我們都學(xué)過加法算式的豎式吧。類似于加法豎式,在進(jìn)位位為 1 的數(shù)位上,是要再加上進(jìn)位位的數(shù)的。計(jì)算機(jī)中的【加】,其實(shí)是邏輯異或。那么問題來了,原先的兩個(gè)數(shù),加上進(jìn)位位,一共三個(gè)數(shù),怎么進(jìn)行異或運(yùn)算(A XOR B XOR C)?
我們知道,數(shù)學(xué)上的四則運(yùn)算是有優(yōu)先級的,先乘除后加減。其實(shí)邏輯多項(xiàng)式運(yùn)算上也同樣有優(yōu)先級,一般認(rèn)為 NOT > AND > OR > XOR。對于同級運(yùn)算,其實(shí)可以使用結(jié)合律,即:A XOR B XOR C = ( A XOR B ) XOR C = A XOR ( B XOR C )。這樣是不是就可以理解了?
而且,多試幾次,你會發(fā)現(xiàn)一個(gè)規(guī)律:任意 n 個(gè)(n ≥ 2)邏輯量進(jìn)行異或運(yùn)算,若其中有奇數(shù)個(gè)邏輯真,則最終結(jié)果為邏輯真;若其中有偶數(shù)個(gè)邏輯真,則最終結(jié)果為邏輯假。
這樣,一個(gè)簡單的加法器就出來了。我們可以試試(假設(shè)是一個(gè)八位二進(jìn)制的加法器),比如 23 + 44 = ?
23 的二進(jìn)制為 00010111
44 的二進(jìn)制為 00101100
運(yùn)算的結(jié)果是二進(jìn)制的 01000011,換算成十進(jìn)制是 67,完全正確。
計(jì)算器的加法原理就這么多,其余的減法、乘法、除法什么的也是在加法器的原理上進(jìn)行改裝的,在這里就不說太多了。