Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- /**
- * Вывод двоичного представления чисел в разных типах переменных
- * Используя побитовый сдвиг и побитовое умножение (битовые операции)
- **/
- void printbit_int(int x)
- {
- int i, ilen = sizeof(int) * 8, mask = 1 << (ilen - 1); // Настройка маски
- char now;
- printf("int %d \t\t -> ", x );
- for (i = 1; i <= ilen; ++i)
- {
- if (x & mask)
- now = '1';
- else
- now = '0';
- putchar(now);
- x <<= 1;
- if (i % 8 == 0)
- putchar(' '); // Разделение байтов
- }
- putchar('\n');
- return;
- }
- void printbit_sh_int(short int x)
- {
- int i, ilen = sizeof(short int) * 8, mask = 1 << (ilen - 1); // Настройка маски
- char now;
- printf("short int %d \t\t -> ", x );
- for (i = 1; i <= ilen; ++i)
- {
- if (x & mask)
- now = '1';
- else
- now = '0';
- putchar(now);
- x <<= 1;
- if (i % 8 == 0)
- putchar(' '); // Разделение байтов
- }
- putchar('\n');
- return;
- }
- void printbit_char(char x)
- {
- int i, ilen = sizeof(char) * 8, mask = 1 << (ilen - 1); // Настройка маски
- char now;
- printf("char %d \t\t -> ", x );
- for (i = 1; i <= ilen; ++i)
- {
- if (x & mask)
- now = '1';
- else
- now = '0';
- putchar(now);
- x <<= 1;
- if (i % 8 == 0)
- putchar(' '); // Разделение байтов
- }
- putchar('\n');
- return;
- }
- void printbit_u_int(unsigned int x)
- {
- int i, ilen = sizeof(unsigned int) * 8, mask = 1 << (ilen - 1); // Настройка маски
- char now;
- printf("unsigned int %d \t -> ", x );
- for (i = 1; i <= ilen; ++i)
- {
- if (x & mask)
- now = '1';
- else
- now = '0';
- putchar(now);
- x <<= 1;
- if (i % 8 == 0)
- putchar(' '); // Разделение байтов
- }
- putchar('\n');
- return;
- }
- void printbit_u_sh_int(unsigned short int x)
- {
- int i, ilen = sizeof(unsigned short int) * 8, mask = 1 << (ilen - 1); // Настройка маски
- char now;
- printf("unsigned short int %d \t -> ", x );
- for (i = 1; i <= ilen; ++i)
- {
- if (x & mask)
- now = '1';
- else
- now = '0';
- putchar(now);
- x <<= 1;
- if (i % 8 == 0)
- putchar(' '); // Разделение байтов
- }
- putchar('\n');
- return;
- }
- void printbit_u_char(unsigned char x)
- {
- int i, ilen = sizeof(unsigned char) * 8, mask = 1 << (ilen - 1); // Настройка маски
- char now;
- printf("unsigned char %d \t -> ", x );
- for (i = 1; i <= ilen; ++i)
- {
- if (x & mask)
- now = '1';
- else
- now = '0';
- putchar(now);
- x <<= 1;
- if (i % 8 == 0)
- putchar(' '); // Разделение байтов
- }
- putchar('\n');
- return;
- }
- int main(void) {
- int i = 100;
- printbit_int(i);
- unsigned int ui = 100;
- printbit_u_int(ui);
- short int si = 100;
- printbit_sh_int(si);
- unsigned short int usi = 100;
- printbit_u_sh_int(usi);
- char c = 100;
- printbit_char(c);
- unsigned char uc = 100;
- printbit_u_char(uc);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement