java - Java 8 位全加器仿真程序

标签 java

我为 8 位全加器编写了以下代码。调试时,main 中调用语句的控制将转到 'eightbitfullAdderFunction' 但它不会评估函数中的任何内容。

我得到 00000000 的加法输出。请帮助我编写代码,我已尝试对逻辑进行许多更改,但没有用。

public class CAModifiedBoothsMultiplier {

public byte[] twosComplement(byte x)
{
    byte y= (byte) (~x+1);

    byte mask=1;
    mask = (byte) (mask << 7);
    byte num[] = new byte[10];
    byte i=0;

    for(i=1;i<=8;i++)
    {
        if((y & mask)==0)
           num[i]=0;
        else
           num[i]=1;

        y=(byte) (y<<1);

    }

    return num;

}

public byte[] saveByte(byte number)
{
   byte mask=1;
    mask = (byte) (mask << 7);
    byte num[] = new byte[10];
    byte i=0;

    for(i=1;i<=8;i++)
    {
        if((number & mask)==0)
           num[i]=0;
        else
           num[i]=1;

        number=(byte) (number<<1);
    }
    return num;    
}

public byte[] eightbitFullAdder(byte a,byte b,byte cin)
{
    byte sum=0,temp1=0,cout=0;
    byte sumno[] = new byte[10];
    byte couttemp[]=new byte[10];

    couttemp[8]=cin;
    byte ain[]=saveByte(a);
    byte bin[]=saveByte(b);

    for(int i=8;i<=1;i--)
    {
        temp1= (byte) (ain[i] ^ bin[i]);

        sum = (byte) (temp1^couttemp[i]);
        sum=(byte) (sum<<7);
        sumno[i]=sum;

        cout=(byte) ((ain[i] & bin[i]) | (temp1 & couttemp[i]));

        if(i!=1)
          couttemp[--i]=cout;
    }



    return sumno;
}


public static void main(String args[])
{
    CAModifiedBoothsMultiplier mbm = new CAModifiedBoothsMultiplier();
    byte x=5;
    byte complementedno[];
    complementedno = mbm.twosComplement(x);

    for(int i=0;i<=8;i++)
        System.out.print(complementedno[i]);

    System.out.println("\n");

    byte a=2,b=3,cin=0;
    byte fulladder[] = mbm.eightbitFullAdder(a,b,cin);

    for(int i=0;i<=8;i++)
        System.out.print(fulladder[i]);

 }

}

最佳答案

在你的方法“eightbitFullAdder”中这一行:

for(int i=8;i<=1;i--)

必须是

for(int i=8;i>=1;i--)

否则,永远不会进入 for 循环

关于java - Java 8 位全加器仿真程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26094626/

相关文章:

java - 如何查找 TreeSet 中元素的等级

java - 为什么没有引用变量用于在awt中添加方法

java - kafka 与 Apache Spark 集成

java - 具有耗时信息的 CompletableFuture

java - Spring MVC Web 应用程序中未找到 Json Webservice

Java:回文查找花费的时间太长;如何优化?

java - Eclipse RCP - 程序中的 JAXB 异常,但在最小示例中不存在 : javax. xml.bind.JAXBElement 或其任何父类(super class)在此上下文中已知

java - 找不到与给定名称匹配的资源,我哪里做错了?

java - 使用 joda time 提取秒数直到午夜

Java调用带有对象参数的方法到main方法