1. Как, используя маску, сбросить определённый бит (записать в него
0)?
2. Код строчной латинской буквы 'а’равен 6115, а заглавной 'А' — 416.
Используя логическую операцию «И», преобразуйте код строчной буквы в
код заглавной. Проверьте, работает ли предложенный вами метод для других
букв.
3. Запишите число —18 в 8-разрядном двоичном коде. Что получится,
если применить к нему логический сдвиг вправо? Арифметический сдвиг
вправо? Сравните полученные результаты и объясните их.
ЖЕЛАТЕЛЬНО с обьяснением
Например, если нам нужно сбросить бит на позиции 3 в числе x, мы можем использовать следующую маску: ~(1 << 3), где << обозначает сдвиг влево. Эта операция создаст число со всеми битами, кроме 3-го, установленными в 1, а 3-й бит будет установлен в 0. Затем мы применяем операцию "И" к числу x и этой маске: x = x & ~(1 << 3).
2. Чтобы преобразовать код строчной буквы в код заглавной с использованием логической операции "И", мы должны изменить только 5-й бит (код заглавной 'А' имеет другое значение на 5-м бите).
Пусть у нас есть код строчной латинской буквы 'а', равный 6115. Чтобы преобразовать его в код заглавной буквы 'А', мы должны установить 5-й бит в 1, оставив остальные биты такими же. Мы можем создать маску, где только 5-й бит установлен в 1 и все остальные биты равны 0: 1 << 5. Затем мы применяем операцию "И" с этой маской к коду строчной буквы: 6115 = 6115 & (1 << 5).
Другие буквы, вероятно, также будут работать с этим методом, поскольку код каждой буквы состоит из нескольких битов, и изменение только нужного бита не должно изменить остальные биты.
3. Чтобы получить 8-разрядный двоичный код для числа -18, сначала мы должны получить двоичное представление числа.
-18 в двоичном коде представляется как 11101110. Чтобы применить логический сдвиг вправо, мы просто сдвигаем все биты на позицию вправо и заполняем освободившийся бит слева нулем. Результат будет 11110111.
Для арифметического сдвига вправо мы учитываем знак числа. Если число отрицательное, то в лидирующие позиции добавляется 1, чтобы сохранить отрицательность числа. Таким образом, -18 в арифметическом сдвиге вправо будет представлено как 11110111.
Результаты логического и арифметического сдвига вправо для числа -18 различаются. Логический сдвиг просто сдвигает все биты вправо, копируя крайний левый бит. Арифметический сдвиг, с другой стороны, учитывает знак числа и добавляет 1 в лидирующие позиции для отрицательных чисел.
Надеюсь, эти объяснения позволяют понять шаги решения вопросов. Если у вас есть еще вопросы, не стесняйтесь задавать!