2014-12-03 4 views
0

У меня есть функция, которая принимает два двоичных числа в виде массива целых чисел, добавляет числа, а затем возвращает сумму как новый массив целых чисел.Добавление двоичных чисел в Java

public static int[] addBin(int a[], int b[]){ 
     int[] sum = {0, 0, 0, 0, 0, 0, 0, 0}; 
     int carryover = 0; 
     int randombanana = 0; 
     int x = 7; 
     for(x = 7; x > 0; x--){ 
     randombanana = a[x] + a[x] + carryover; 
     if(randombanana == 1){ 
      sum[x] = 1; 
      carryover = 0; 
     } 
     else if(randombanana == 2){ 
      sum[x] = 0; 
      carryover = 1; 
     } 
     else if(randombanana == 3){ 
      sum[x] = 1; 
      carryover = 1; 
     } 
     else if(randombanana == 0){ 
      sum[x] = 0; 
      carryover = 0; 
     } 
     else{ 
      System.out.println("Either I [censored] up, or you [censored] up. I'm a genius so I'm going to assume you [censored] up"); 
     } 
     } 
      if(carryover == 1){ 
      sum[x] = 1; 
     } 
     return sum; 
    } 

код прекрасно работает на холостых значные номера, включая номера, которые требуют несущих цифры, но на двойных или тройных чисел цифр он работает, когда число добавляется к себе, но не тогда, когда добавляются различные множественные числа цифр ,

ответ

0

Должно быть

randombanana = a[x] + b[x] + carryover; 
0

Ваш цикл не обрабатывает 0-й бит

for(x = 7; x >= 0; x--){ 
+0

Окончательный бит обрабатывается в отдельном, если оператор вне для цикла. –

Смежные вопросы