在不使用内置方法的情况下在Java中添加二进制数?

时间:2016-04-13 00:44:41

标签: java binary

我正在搞乱Java并且不确定为什么二进制的最终结果是增加了一个额外的数字而不是想要的。我想打印8位,而不是更多或更少。我尝试了不同的方法/方法,但仍然没有运气。这是我到目前为止所拥有的。

我做错了什么?

public static void main(String[] args) {
        Scanner sn = new Scanner(System.in);


        int i,m,n,sum,carry=0;
     System.out.println("Enter your first binary number: "); 
                    int n1 = sn.nextInt();

                   System.out.println("Enter your second binary number: ");
                   int n2 = sn.nextInt();

                   for (i=arr.length-1;i>=0;i--){
                   m=n1%10;
                   n=n2%10;
                   n1=n1/10;
                   n2=n2/10;
                   sum=m+n+carry;

                         if (sum==1) {
                             arr[i]=1;
                             carry=0;
                            }

                            else if(sum==2) {
                              arr[i]=0;
                              carry=1;
                             }

                            else if(sum==3) {
                              arr[i]=1;
                              carry=1;
                             }

                            else {
                             arr[i]=m+n+carry;
                         }
                    }

                    for(i=0;i<arr.length;i++){
                        System.out.print(arr[i]); 
                        }
                }

2 个答案:

答案 0 :(得分:0)

在使用二进制文件的任何语言中,我总是使用过滤器来限制位宽:
.arr [i] = m + n + carry&amp; 255;
这可能不是完整的答案,只是位溢出的基本停止间隙。
不超过8位可以通过这个'&amp; 255'滤波器。如果需要,它还会创建前导零。

答案 1 :(得分:0)

您的总和可以是0,1,2或3.您检查1到3,因此else为0。那里的行(arr[i]=m+n+carry;)是错误的,它应该是{ {1}}

或者只是移除整个arr[i] = 0; carry = 0;块以分析if并执行以下操作:

sum