alu是計算機cpu的核心,即 算術邏輯單元(arithmetic and logic unit)000000000101alu有幾大功能,是計算機計算最基礎的功能:
1.算術運算:包含加法、減法等
2.邏輯運算:主要是布林運算,邏輯和、或、非、異或等
3.求補器:計算機中,二進位制補碼極其重要,可以求乙個二進位制的補碼(原始碼取反得反碼,反碼加一得補碼)
4.移位器:主要有 算術右移、邏輯右移、左移
5.狀態標誌:乙個記錄狀態的標誌。
4/**
5 以下加法減法等都預設是相同長度的,如果長度不同會報錯,當然,我只是懶得處理。
20*/
2122
public
class
alu
35return
s;36}37
38/**
39* 預設長度,即可以滿足的最小長度
40*/
41public string int2binary(int
n) else48}
4950
public
intbinary2int(string binary)
5354
/**55
* 加法器:計算兩個二進位制的和56*
57*
@param
binary1
58*
@param
binary2 必須相同長度
59*
@return
返回len+1長度: 最高位進製+和
60*/
61public
string add(string binary1, string binary2) else
if (res[i] == 3) else carry = 0;//
無進製,前面乙個進製置073}
74 string result = "";
75for (int i = 0; i < res.length; i++)
78return carry +result;79}
8081
public string substract(string a, string b)
8485
public string get01(int
n, string zeroorone)
90return
res;91}
9293
public
string shiftrightlogically(string binary)
9697
public
string shiftleft(string binary)
100101
/**102
* 算術右移
103*/
104public
string shiftright(string binary)
107108
/**109
* 取補碼(相反數)
110*/
111public
string getnegative(string binary)
114115
/**116
* 取反碼
117*/
118public
string getcomplement(string binary)
123return
res;
124}
125126
/**127
* 整數乘法,布思演算法
128*/
129public
string multiply(string q, string m) else
if (qq0.equals("01"))
140 string temp = shiftright(a + q +q0);
141 a = temp.substring(0, a.length());
142 q = temp.substring(a.length(), 2 *a.length());
143 q0 = temp.charat(temp.length() - 1);
144}
145return a +q;
146}
147148
public string divide(string a, string b)
164else
167168
//判斷a的符號變化沒有;
169if (a_sign == a.charat(0) || !a.contains("1"))
172else
176}
177 string res = new string[2]; //
返回0:商,1:餘數
178 res[0] = (a.charat(0) == b.charat(0)) ?q : getnegative(q);//商在q中,如果除數被除數不同號,則取補碼
179 res[1] =a;//餘數在a中
180return
res;
181}
182183
public
static
void
main(string args)
199 }
output:
1110
111111111111
111110
001111
011111
000000011100
0111100
10100
1011
01001001
1001
0010
11011101
00111...00001
媽的,考完上機,剛才考得差不多都是上面這些內容,只有乙個讓人看不太懂的加法器,不過還好可以推理出來。
皇天不負有心人啊
計算機中整數的加減運算
通常在程式設計時,會預設將指標以及位址等說明為無符號整數,故其遵循無符號整數的加減運算。在其他情況下面,通常都是進行帶符號的整數運算,但是這兩種運算的本質其實是相通的,因為在計算機內部,這些有無符號整數的加減或者乘除操作其實都是通過相同的加法器來完成的 在加法器內部通過輸入進行判斷是輸出無符號還是有...
計算機底層04 計算機儲存層次架構
上接 計算機底層03 cpu工作原理 按照儲存介質分類 有磁芯,磁碟,光碟,半導體儲存 按照儲存性質分類 易失性儲存 非易失性儲存 也叫做非持久化儲存 持久化儲存 易失性儲存通常指斷電即丟失 按照效能層次分類 主存 外存進行分類 而快取為了彌補速度的差異性 儲存分為主存,輔存和快取 而主存裡有ram...
計算機底層網路協議
基本功能為透過目標裝置的ip位址,查詢目標裝置的mac位址,以保證通訊的順利進行。在每台安裝有tcp ip協議的電腦或路由器裡都有乙個arp快取表,表裡的ip位址與mac位址是一對應的。當傳送資料時,主機a會在自己的arp快取表中尋找是否有目標ip位址。如果找到就知道目標mac位址為 00 bb 0...