Поразрядные операции из книги Кернигана и Ритчи - C (СИ)
Формулировка задачи:
Объясните, пожалуйста, как работают три примера из книги Кернигана и Ритчи.
Поразрядная операция И (&) часто используется для обнуления некоторого набора битов. Например, следующий оператор обнуляет все биты переменной n, кроме младших семи:
Поразрядная операция ИЛИ (|), напротив, используется для того, чтобы сделать отдельные биты единицами. Следующий оператор делает единицами все биты, которые равны 1 в константе SET_ON:
Одноместная операция ~ даёт поразрядное дополнение целого числа до единицы, т. е. преобразует каждый единичный бит в нулевой и наоборот. Например, следующий оператор делает последние шесть бит переменной x равными 0:
Я не понимаю, почему в первом примере обнуляются все биты, кроме младших семи. Например, если я возьму n = 255 , то . Но я не понимаю, как это получилось, ведь , и просто все биты в числе, кроме последних семи обнулиться не могли. Или цифра 0 что-то означает в записи этого числа 0177?
n = n & 0177;
x = x | SET_ON;
x = x & ~077;
Решение задачи: «Поразрядные операции из книги Кернигана и Ритчи»
textual
Листинг программы
printf("%d", ~077);
Объяснение кода листинга программы
В данном коде происходит поразрядное исключающее ИЛИ (~) с числом 77 (077 в десятичной системе счисления), а затем результат выводится на экран с помощью функции printf(). Список действий:
Число 77
->077
(перевод в восьмеричную систему счисления)077
->~077
(исключающее ИЛИ с числом 77)~077
->01001111
(поразрядное преобразование в двоичную систему счисления)01001111
->131
(десятичное представление числа)131
->131
(вывод числа на экран с помощью функции printf())
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д