Вывести на экран восьмеричное представление короткого целого - C (СИ)
Формулировка задачи:
Дана задача:
Используя битовые операции, вывести на экран восьмеричное представление беззнакового короткого целого.
Была идея разбить число на триады, но преподаватель сказала делать через маски и сдвиги.
Объясните, пожалуйста, как подойти к её решению.
Решение задачи: «Вывести на экран восьмеричное представление короткого целого»
textual
Листинг программы
#include <stdio.h> #include <stdlib.h> #include <limits.h> #define OCTAL_MASK ((unsigned int)7) #define SHL_MASK (OCTAL_MASK << ((sizeof (int)) * (CHAR_BIT) - (3))) #define SHR_MASK(_val) ((_val) >> ((sizeof (int)) * (CHAR_BIT) - (3))) int main(int argc, char** argv) { unsigned int x = 0xFFFFFFFF, t; t = sizeof(int); fprintf(stdout, "%o\n", x); /*align x*/ if (t < 8) { if (t == 4) { t = x & 0xC0000000 >> 30; x <<= 2; fprintf(stdout, "%u", t); } else if (t == 2){ t = x & 0x8000 >> 15; x <<= 1; fprintf(stdout, "%u", t); } } while (x) { fprintf(stdout, "%u", SHR_MASK((x & SHL_MASK))); x <<= 3; } putchar('\n'); return 0; }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д