Задать вопрос
@indeterminate

Как понять, как работает этот метод в ShowBits?

Читаю "Java 8 руководство для начинающих" Шилдта, дочитал до 199 страницы и тут произошел затык. Автор описывает класс ShowBits, который должен показывать двоичное представление любого числа. Внутри этого класса есть метод show, но я совсем не понял принцип его работы. Сам автор тоже ничего не объясняет, после кода программы идет следующий раздел главы.
Вот код класса
class ShowBits {
    int numbits;
    
    ShowBits(int n) {
        numbits = n;
    }
    
    void show(long val) {
        long mask = 1;
        
        // Сдвинуть значения 1 влево на нужную позицию
        mask <<= numbits-1;
        
        int spacer = 0;
        for(; mask != 0; mask >>>= 1) {
            if((val & mask) != 0) System.out.print("1");
            else System.out.print("0");
            spacer++;
            if((spacer % 8) == 0) {
                System.out.print(" ");
                spacer = 0;
            }
        }
        System.out.println();
    }
}

С сохранением комментариев автора.

Помогите понять это, пожалуйста.
  • Вопрос задан
  • 126 просмотров
Подписаться 1 Простой Комментировать
Решения вопроса 1
@crazywu
Всё достаточно просто.
Сперва создается маска из нулей и ведущей единицы mask.
Дальше единица сдвигается в цикле по этой маске и выполняется логическая операция and с аргументом функции.
если результатом логической операции является 0 - то для текущей позиции единицы в маске у аргумента на той же позиции стоит 0, если отличное от ноля значение - единица. В соответствии с этим они и выводятся на экран.
spacer - это просто способ разделять выводимые биты в группы по 8 при помощи пробела.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы