Вывод чисел в двоичном виде - C (СИ)

Узнай цену своей работы

Формулировка задачи:

камрады, добры день. есть проблема с программой, которая выводит числа в двоичном виде. например, для типов int, сhar, unsigned int выводит (вроде) правильно. а вот long unsigned int выводит как-то странно. например, для числа 1 в бинарном виде получается два бита равны единице. output: sizeof(long unsigned int) = 8 sizeof(int) = 4 sizeof(char) = 1 sizeof(unsigned int) = 4 (int) -5 11111111111111111111111111111011 (int) -4 11111111111111111111111111111100 (int) -3 11111111111111111111111111111101 (int) -2 11111111111111111111111111111110 (int) -1 11111111111111111111111111111111 (int) 0 00000000000000000000000000000000 (int) 1 00000000000000000000000000000001 (int) 2 00000000000000000000000000000010 (int) 3 00000000000000000000000000000011 (int) 4 00000000000000000000000000000100 (int) 5 00000000000000000000000000000101 unsigned int 1 00000000000000000000000000000001 char -2 11111110 long unsigned int 1 0000000000000000000000000000000100000000000000000000000000000001
#include <stdio.h>

void bin(long unsigned int k, long unsigned int size)
{
    long unsigned int i;

    for (i = size * 8; i > 0; --i) {
        printf("%d", (k & (1 << (i-1))) ? 1 : 0);
    }
    printf("\n");
}

int
main(void)
{
    long unsigned int lu;
    unsigned int u;
    int i;
    char c;
 
    printf("sizeof(long unsigned int) = %lu\n", sizeof(long unsigned int));
    printf("sizeof(int) = %lu\n", sizeof(int));
    printf("sizeof(char) = %lu\n", sizeof(char));
    printf("sizeof(unsigned int) = %lu\n", sizeof(unsigned int));
    for (i = -5; i < 6; ++i) {
        printf("(int) %i\n", i);
        bin(i, sizeof(i));
    }
    u = 1;
    printf("unsigned int %u\n", u);
    bin(u, sizeof(u));
    c = -2;
    printf("char %d\n", c);
    bin(c, sizeof(c));
    lu = 1;
    printf("long unsigned int %lu\n", lu);
    bin(lu, sizeof(lu));
    return 0;
}
укажите ошибку или объясните мне, почему два бита равны единице для числа long unsigned int lu=1;

Решение задачи: «Вывод чисел в двоичном виде»

textual
Листинг программы
char c = -1;

Объяснение кода листинга программы

В данном коде происходит следующее:

  1. Объявляется переменная типа char с именем c и инициализируется значением -1. Список:
  2. c - переменная типа char, значение -1.

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


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

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

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