计算机中的加法实现
分析:c=a+bc=a+bc=a+b转为二进制为:a=(anan−1...a2a1)2,b=(bnbn−1...b2b1)2a=(a_na_{n-1}...a_2a_1)_2,b=(b_nb_{n-1}...b_2b_1)_2a=(anan−1...a2a1)2,b=(bnbn−1...b2b1)2则,
加数 | ana_nan | an−1a_{n-1}an−1 | … | a2a_2a2 | a1a_1a1 | |
---|---|---|---|---|---|---|
加数 | bnb_nbn | bn−1b_{n-1}bn−1 | … | b2b_2b2 | b1b_1b1 | |
进位标志 | en+1e_{n+1}en+1 | ene_nen | en−1e_{n-1}en−1 | … | e2e_2e2 | e1e_1e1 |
和 | cn+1c_{n+1}cn+1 | c_n | cnc_ncn | … | c2c_2c2 | c1c_1c1 |
由上表可以得知进位标志eie_iei是由ei−1,ai,bi和eie_{i-1},a_i,b_i和e_iei−1,ai,bi和ei共同决定的。cic_ici是由ai,bi和eia_i,b_i和e_iai,bi和ei共同决定的。所以,需要列出ci,ai,bi和eic_i,a_i,b_i和e_ici,ai,bi和ei真值表。关于进位标志的说明:ei−1=1表示i−1位的计算有向e_{i-1}=1表示i-1位的计算有向ei−1=1表示i−1位的计算有向i位进一的值位进一的值位进一的值
aia_iai | bib_ibi | ei−1e_{i-1}ei−1 | eie_iei | cic_ici |
---|---|---|---|---|
0 | 0 | 0 | 0 | 0 |
0 | 0 | 1 | 1 | 0 |
0 | 1 | 0 | 1 | 0 |
0 | 1 | 1 | 0 | 1 |
1 | 0 | 0 | 1 | 0 |
1 | 0 | 1 | 0 | 1 |
1 | 1 | 0 | 0 | 1 |
1 | 1 | 1 | 1 | 1 |
根据真值表可以得到ci和eic_i和e_ici和ei的主析取范式:
ci=(¬ai∧¬bi∧ei−1)∨(¬ai∧bi∧¬ei−1)∨(ai∧¬bi∧¬ei−1)∨(ai∧bi∧ei−1)c_i = (¬a_i∧¬b_i∧e_{i-1})∨(¬a_i∧b_i∧¬e_{i-1})∨(a_i∧¬b_i∧¬e_{i-1})∨(a_i∧b_i∧e_{i-1})ci=(¬ai∧¬bi∧ei−1)∨(¬ai∧bi∧¬ei−1)∨(ai∧¬bi∧¬ei−1)∨(ai∧bi∧ei−1)—①
ei=(¬ai∧bi∧ei−1)∨(ai∧¬bi∧ei−1)∨(ai∧bi∧¬ei−1)∨(ai∧bi∧ei−1)e_i = (¬a_i∧b_i∧e_{i-1})∨(a_i∧¬b_i∧e_{i-1})∨(a_i∧b_i∧¬e_{i-1})∨(a_i∧b_i∧e_{i-1})ei=(¬ai∧bi∧ei−1)∨(ai∧¬bi∧ei−1)∨(ai∧bi∧¬ei−1)∨(ai∧bi∧ei−1)—②
由①②两式可以设计出ai+bia_i+b_iai+bi的加法电路:
那么扩展到整体的加法电路就可以模块化设计为:
以上就是根据前面所学得内容得到的加法器。现实中使用的电路要比这个设计优秀太多。这里只是对前面所学知识的一次应用。