首页 > 编程知识 正文

c语言10进制转2进制函数,c语言程序的基本组成部分

时间:2023-05-05 01:28:18 阅读:154598 作者:1820

我的教授分配了这个类,编写了C语言程序,用基本加法器模拟32位加法器。 我知道32位加法器由8个4位加法器组成。 但是,我不知道如何用c模拟4位加法器。 我需要实现4位二进制纹波进位加法器、4位二进制进位生成器和4位进位加法器。 通过完全加法器真值表和Karnaugh映射,获得了Sum和Carry Out输出的功能。 关于总和,收到了A xor B xor进行。 关于执行功能,收到了(A * B ) (进位) A xor B ) )。 我不知道现在去哪里。 我确信必须使用按位运算符在位级别操作整数。 但是,虽然没有在纸笔之外实现过它们,但是基本上知道位运算符。

如何分解整数以获得函数的a、b和“进位”输入? 如何获得“合计运行”的输出? 如何将所有加法器连接起来得到4位加法器?

感谢您的协助!

我什么都没尝试过。 因为我不知道哪里不幸福

您的问题确实是“如何将整数分解为单个位? ”,这就是应该更改标题等的地方。

那么,作为简单的解决方案,可以采用半加法器和全加法器的电路图,进行抽象。 来自维基百科:

半加法器:

完全加法器:

#包含

typedef char bit;

bit carry=0;

bithalfadd(bita,bit B ) {

嘉莉=ab;

return A ^ B;

}

bitfulladd(bita,bit B ) {

bit xor=A ^ B;

bit ret=carry ^ xor;

carry=(carryxor )|) ab;

返回;

}

voidfillnum(intnum,bit *array ) )

int i;

for(I=0; i 32; I ) {

array[i]=(num i ) 1;

}

}

int main ()。

bit num1[32]={0},num2[32]={0};

int A=64620926,B=1531529858;

fillnum(a,num1);

fillnum(b,num2);

int r=0;

bittmp=halfadd(num1[0],num2[0];

Putchar(tmp )? '1' : '0';

r=tmp;

int i;

for(I=1; i 32; I ) {

tmp=fulladd(num1[I],num2[i];

r =tmp i;

Putchar(tmp )? '1' : '0';

}

Putchar (嘉莉? '1' : '0';

printf((%d(%d ) d=%d ),r、a、b、A B );

返回0;

}

首先输出带LSB的附加值,展示了基本原理。 据Ideone称,这是有效的。 在模拟4位加法器的情况下,可以用同样的方法处理逻辑电路。

如果不首先将整数读入数组,则始终可以使用

#definegetbit(num,bit ) ) (numbit )1) )。

为了安全起见,可以将其放入函数调用中

可以,但是你刚为他们完成了某人的作业。

我的看法是,如果他真的对学习感兴趣,他就不会偷窃。

然后,使用查找表模拟4位加法器。 在这种情况下,这将是256个条目表,可以设置为16 x 16的值数组。

unsigned short outputs[16][16];

multOut=outputs[inA][inB];

数组需要初始化,但这应该非常简单。

数组中每个值的第五位用作进位位。

首先,需要将大整数分解为单个位。 这取决于系统的耐用性(数字存储器是顶层还是底层)。 一组位掩码很有用。 假设大结局、

int bit[]={

10,//least significant bit

十一、

十二、

13

(;

因此,要获得数字第一名,请执行以下操作

leastSignificantBitOfA=Abit[0];

从那里,可以使用几个共享数组来存储输出,或者创建简单的结构,例如:

struct fullAdderReturn{

int sum;

int carryOut;

}

structfulladderreturnonebitadder (inta,int b,int carryIn ) )。

{

struct fullAdderReturn output;

output.sum=ab;

output.carryout=(ab )|)| (acarryIn )|)| (bcarryIn;

返回输出;

}

我在这里在http://ideone.com/NRoQMS上组合了简单的2位波形加法器。 我希望那个能给你提供想法。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。