Какой тип использовать, чтобы задать массив двоичных кодов - C (СИ)
Формулировка задачи:
надо задать массив двоичных кодов вида: 1010, 0010, 0110 и т.п. что лучше взять? просто int потеряет не значащие нули (хз может это и не принципиально), а если писать 0x0010 то это вроде уже получится вообще другое число (в шестнадцатеричной системе), а мне с ними еще действия потом осуществлять...
Решение задачи: «Какой тип использовать, чтобы задать массив двоичных кодов»
textual
Листинг программы
- #include <stdint.h>
- int main (void) {
- uint8_t line = 0; /* <--- отрезок*/
- const uint8_t high_mask = 0xF0, low_mask = 0x0F; /* <--- маски для тетрад*/
- const uint8_t shift = 4; /* <--- длина сдвига */
- line = 10 << shift; /* <--- начальная точка. код '1010' взят произвольно*/
- line |= 7; /* <--- конечная точка. код '0111' взят произвольно*/
- /* если коды обоих концов отрезка равны 0... */
- if ((((line & high_mask) >> shift) | (line & low_mask)) == 0) {
- /* TODO */
- ;
- }
- /* если логическое & кодов обоих концов отрезка не равно нулю... */
- else if (((line & high_mask) >> shift) & (line & low_mask)) {
- /* TODO */
- ;
- }
- /* если логическое & кодов обоих концов отрезка равно нулю ... */
- else if ((((line & high_mask) >> shift) & (line & low_mask)) == 0) {
- /* TODO */
- ;
- }
- return 0;
- }
Объяснение кода листинга программы
- Объявлена переменная
line
типаuint8_t
- Объявлены константы
high_mask
иlow_mask
типаuint8_t
- Объявлена константа
shift
типаuint8_t
- В переменную
line
записывается результат сдвига10
наshift
позиций вправо и последующего объединения с7
- Если результат вычисления выражения ((((line & high_mask) >> shift) | (line & low_mask)) == 0) равен нулю
- Если результат вычисления логического И кодов обоих концов отрезка не равен нулю
- Если результат вычисления логического И кодов обоих концов отрезка равен нулю
- Возвращается 0
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д