五月天青色头像情侣网名,国产亚洲av片在线观看18女人,黑人巨茎大战俄罗斯美女,扒下她的小内裤打屁股

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

如何在mc里打造一個(gè)計(jì)算器 [4] -- BCD轉(zhuǎn)BIN

2020-03-04 23:04 作者:nyasyamorina  | 我要投稿


在計(jì)算器里, 從輸入到計(jì)算, 中途會(huì)遇上一個(gè)棘手的問(wèn)題:? 十進(jìn)制轉(zhuǎn)二進(jìn)制

從輸入到二進(jìn)制輸出一共分為3個(gè)部件:? 鍵盤輸入, BCD寄存 和 BCD轉(zhuǎn)BIN

作為最簡(jiǎn)單的鍵盤也沒什么好說(shuō)的, 不過(guò)需要注意的是: 0對(duì)應(yīng)的BCD為0000, 這與無(wú)信號(hào)的情況是一樣的, 為了讓下一個(gè)部件知道"輸入了一個(gè)0", 所以需要一條額外的觸發(fā)信號(hào)(黃色)


因?yàn)槲覀兊牟考遣恢劳婕逸斎霂孜坏臄?shù)字, 并且每按下一位, 這個(gè)BCD可能對(duì)應(yīng)玩家需要的數(shù)字的十位或者個(gè)位, 所以需要一個(gè)用來(lái)儲(chǔ)存BCD的位移寄存器

藍(lán)色是輸入, 黃色是觸發(fā)信號(hào), 紅色是BCD輸出

這里用實(shí)際操作演示一下就懂的了:

①:? 原本寄存器內(nèi)無(wú)數(shù)據(jù):? 0000,0000,0000,0000,0000

②:? 按下 3:? ?0011輸入寄存器, 隨后觸發(fā)信號(hào)輸入, 整體向左移動(dòng): 0000,0000,0000,0000,0011

③:? 按下2:? 重復(fù)上述步驟得到: 0000,0000,0000,0011,0010

④:??按下6:? ?得到: 0000,0000,0011,0010,0110

不過(guò)這里有一個(gè)需要注意的地方, 位移寄存器只能儲(chǔ)存有限的數(shù)據(jù), 而溢出的數(shù)據(jù)會(huì)在左邊溢出


位移寄存器輸出的BCD碼經(jīng)過(guò)轉(zhuǎn)碼后可以得到用于計(jì)算的BIN碼, 這里把輸出的BCD碼最右邊4位(個(gè)位)叫做A0, 右邊起第5~8位(十位)叫做A1, 以此類推, 目標(biāo)數(shù)字為n

那么可以知道? n = ... + A3*1000 + A2*100 + A1*10 + A0*1,? ?分解因式得到:

n = ((((...)x10+A3)x10+A2)x10+A1)x10+A0

可以看到一個(gè)不斷出現(xiàn)的結(jié)構(gòu):? (...)x10+An ,? 于是我們可以設(shè)計(jì)出一個(gè)部件: 輸入兩個(gè)數(shù)字:B和An, 輸出為C=Bx10+An,? ?把上一級(jí)的輸出C放入下一級(jí)的輸入B里, 直至窮盡BCD碼,? ?這就是BCD轉(zhuǎn)BIN的思路了

觀察部件的計(jì)算部分:? C=Bx10+An? =? Bx(8+2)+An? =? Bx8 + Bx2 + An

其中x8和x2可以使用位移計(jì)算, 即? ?Bx8 = B<<3,?Bx2 = B<<1,? 那么 C? =? B<<3 + B<<1 + An

在全加器里, 一共有兩個(gè)輸入, 當(dāng)B<<3和B<<1輸入時(shí), 可以觀察到下面的情況:?

加法器的前三位沒有被利用到, 當(dāng)然我們可以省略這三位, 后面再做一個(gè)加法器處理 +An 部分,?但是An是只有4位的BCD碼, 額外使用一個(gè)加法器無(wú)疑是太小題大做, 那么我們可以吧加法器的輸入設(shè)計(jì)為:

但是在這里可以看到An的第4位 An_3 沒有位置插入加法器的輸入,? 但是多虧BCD碼的特性: 取值從0000到1001,? 并且窮舉加法器的第3和第2位, 并且對(duì)比加法器內(nèi)從第3位向第4位的進(jìn)位S_3和An的第4位:? ? 最右列是An可能的值, 并且因?yàn)闆]有規(guī)定An_0的值, 所以An會(huì)有多個(gè)值

這里把An不可能的值全部畫上了下劃線

可以看到當(dāng)An_3可以為1時(shí), S_3絕對(duì)不會(huì)為1 ,反之亦然.? ?那么把An_3接入S_3處也不會(huì)造成錯(cuò)誤

橙色就是吧An_3接入S_3處

如此利用BCD碼的特性, 就把C=B<<3+B<<1+An用一個(gè)加法器就完成了, 把一堆這種部件堆在一起, 并且分別連上正確的BCD位移寄存器的輸出, 就做好了BCD轉(zhuǎn)BIN了

當(dāng)然, 就像乘法器一樣, 對(duì)于重復(fù)的部件, 也有化簡(jiǎn)的辦法, 化簡(jiǎn)后的結(jié)果就是最開始的圖片, 一個(gè)輸出32bits的bcd轉(zhuǎn)bin

如何在mc里打造一個(gè)計(jì)算器 [4] -- BCD轉(zhuǎn)BIN的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
宜兰县| 新民市| 伊宁县| 昂仁县| 疏勒县| 南投市| 吉木萨尔县| 霍林郭勒市| 左权县| 乌什县| 苗栗市| 婺源县| 中超| 云南省| 云安县| 屏边| 耒阳市| 兖州市| 濮阳县| 滦南县| 宝兴县| 昌邑市| 闽清县| 新竹县| 阿拉善盟| 麻江县| 鄱阳县| 徐闻县| 永和县| 信宜市| 合江县| 辽中县| 友谊县| 玛纳斯县| 南澳县| 伊吾县| 平阳县| 临漳县| 龙口市| 邢台县| 安塞县|