Заполнение остатка массива - PullRequest
0 голосов
/ 21 октября 2018

Я пишу программу с двумя дополнениями, в которой я преобразую десятичную в двоичную форму, используя массив.Я также хочу иметь бинарный файл 8 бит.

Так как, например, 22 - это 10110 в двоичном формате, я хочу заполнить оставшуюся часть массива нулями, но я не смог найти способ, как это сделать.

Любая помощь приветствуется.

Редактировать:

static void  toBin(int number){
    int[] bin = new int[8];
    int i =0;
    while (number > 0){
        bin[i] = number % 2;
        number = number/2;
        i++;
    }

    // Here is where I would like to add zeros if the size of the array is below 0

    for (int j = i-1; j>=0;j--){
        System.out.println(bin[j]); //Array gets reserved
    }
}

Ответы [ 5 ]

0 голосов
/ 21 октября 2018

Существует класс с именем "Массивы" , который имеет метод с именем "fill ()" .

Синтаксис "Arrays.fill() ".

Внутри круглых скобок после " fill " необходимо указать значение, которое заполнит остальную часть массива.

В приведенном ниже примере элементы, имеющие индекс от 0 до 5 (без 6), заполняются значением 1.

int[] intArray = new int[8];

Arrays.fill(ints2, 0, 6, 1) ;

System.out.println(Arrays.toString(intArray));

Вот результат:

[1, 1, 1, 1, 1, 1, 0, 0]
0 голосов
/ 21 октября 2018

Посмотрите на этот код:

int number =22;
int bits[]= new int[8];
for(int i=0;i<=7;i++){
    if(number>0){
        bits[7-i]=number%2;
        number/=2;
    }
    else{
        bits[7-i]=0;
    }
}
for(int i=0;i<=7;i++){
    System.out.print(bits[i]);
}  

Я думаю, я решил вашу проблему.

0 голосов
/ 21 октября 2018

Сначала инициализируйте всю строку и зарезервируйте некоторое место, например, восемь символов.

String binaryStr = "00000000";
for (int i = 0; i < binaryStr.Length (); i++)
{
    if (binaryShouldBeOne)
    {
        binaryStr[i] = '1';
    } else 
    {
        binaryStr[i] = '0';
    }
}
0 голосов
/ 21 октября 2018

Это может помочь.

    int out[] = new int[8];
    int in = 22;

    int i = out.length - 1;
    while (i >= 0 && in > 0) {
        out[i] = in % 2;
        in /= 2;
        i--;
    }
    for (int j = 0; j < out.length; j++) {
        System.out.print(out[j] + " ");
    }
    System.out.println("");
0 голосов
/ 21 октября 2018

Массив инициализируется нулями при его создании.Вам нужно просто поменять нужные цифры на 1, а остальные останутся нулями.Попробуйте начать заполнение массива с 8-й цифры, затем уменьшите счетчик, чтобы вы могли достичь самой левой цифры.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...