Вывод чисел в двоичном виде - 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
укажите ошибку или объясните мне, почему два бита равны единице для числа long unsigned int lu=1;
#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; }
Решение задачи: «Вывод чисел в двоичном виде»
textual
Листинг программы
char c = -1;
Объяснение кода листинга программы
В данном коде происходит следующее:
- Объявляется переменная типа char с именем
c
и инициализируется значением -1. Список: c
- переменная типа char, значение -1.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д