ASCII кодировка - C (СИ)
Формулировка задачи:
В результате выполнения следующего кода ASCII-коды нулевого, первого и второго символов буфера temp складываются (по модулю 8), а результата записывается в 6,7,8 биты переменной H:
Но почему именно в 6, 7 и 8 биты? Понятно, что их коды складываются, потом происходит побитовое умножение, но зачем потом умножать на 64? Почему именно на 64 и что это даёт?
H = ((temp[0]+temp[1]+temp[2])&7)*64;
Решение задачи: «ASCII кодировка»
textual
Листинг программы
H = ((temp[0]+temp[1]+temp[2])&7)*64;
Объяснение кода листинга программы
- В данном коде используется оператор
+для сложения трех чисел (temp[0], temp[1], temp[2]). - Результат этого сложения (temp[0]+temp[1]+temp[2]) затем используется в операции
ANDс числом 7. - Результат этой операции (temp[0]+temp[1]+temp[2])&7) затем умножается на 64.
- Значение переменной
Hприсваивается результату этой операции. - Переменная
Hпредставляет собой 8-битное число в ASCII кодировке. - Значение переменной
tempпредставляет собой массив из трех 8-битных чисел. - Для каждого числа в массиве
tempиспользуется побитовоеANDс числом 7. - Побитовое
ANDиспользуется для получения значения младшего бита в каждом числе массиваtemp. - Значение младшего бита затем используется для установки соответствующего бита в числе
H. - Каждое число в массиве
tempсначала считывается как 8-битное число в ASCII кодировке. - Затем каждое число преобразуется в числовой формат с использованием функции
atoi. - Полученные три числа затем используются в операции сложения.
- Результат этой операции затем используется в побитовом
ANDс числом 7. - Полученное значение затем используется для установки соответствующего бита в числе
H. - В ASCII кодировке, число 64 соответствует символу
@. - В ASCII кодировке, число 7 соответствует символу
a. - В ASCII кодировке, число 8 соответствует символу
b. - В ASCII кодировке, число 9 соответствует символу
c. - В ASCII кодировке, число 10 соответствует символу
d. - В ASCII кодировке, число 11 соответствует символу
e.