Поразрядные операции из книги Кернигана и Ритчи - C (СИ)

Узнай цену своей работы

Формулировка задачи:

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

Решение задачи: «Поразрядные операции из книги Кернигана и Ритчи»

textual
Листинг программы
printf("%d", ~077);

Объяснение кода листинга программы

В данном коде происходит поразрядное исключающее ИЛИ (~) с числом 77 (077 в десятичной системе счисления), а затем результат выводится на экран с помощью функции printf(). Список действий:

  1. Число 77 -> 077 (перевод в восьмеричную систему счисления)
  2. 077 -> ~077 (исключающее ИЛИ с числом 77)
  3. ~077 -> 01001111 (поразрядное преобразование в двоичную систему счисления)
  4. 01001111 -> 131 (десятичное представление числа)
  5. 131 -> 131 (вывод числа на экран с помощью функции printf())

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

5   голосов , оценка 3 из 5
Похожие ответы