Вывести на экран восьмеричное представление короткого целого - 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;
}

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


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

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

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