Advertisement
KrimsN

Bin

Feb 25th, 2019
100
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 3.55 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. /**
  4.  * Вывод двоичного представления чисел в разных типах переменных
  5.  * Используя побитовый сдвиг и побитовое умножение (битовые операции)
  6. **/
  7.  
  8. void printbit_int(int x)
  9. {
  10.     int i, ilen = sizeof(int) * 8, mask = 1 << (ilen - 1); // Настройка маски
  11.     char now;
  12.  
  13.     printf("int %d \t\t ->  ", x );
  14.     for (i = 1; i <= ilen; ++i)
  15.     {
  16.         if (x & mask)
  17.             now = '1';
  18.         else
  19.             now = '0';
  20.         putchar(now);
  21.         x <<= 1;
  22.         if (i % 8 == 0)
  23.             putchar(' '); // Разделение байтов
  24.     }
  25.     putchar('\n');
  26.     return;
  27. }
  28.  
  29. void printbit_sh_int(short int x)
  30. {
  31.     int i, ilen = sizeof(short int) * 8, mask = 1 << (ilen - 1); // Настройка маски
  32.     char now;
  33.  
  34.     printf("short int %d \t\t ->  ", x );
  35.     for (i = 1; i <= ilen; ++i)
  36.     {
  37.         if (x & mask)
  38.             now = '1';
  39.         else
  40.             now = '0';
  41.         putchar(now);
  42.         x <<= 1;
  43.         if (i % 8 == 0)
  44.             putchar(' '); // Разделение байтов
  45.     }
  46.     putchar('\n');
  47.     return;
  48. }
  49. void printbit_char(char x)
  50. {
  51.     int i, ilen = sizeof(char) * 8, mask = 1 << (ilen - 1); // Настройка маски
  52.     char now;
  53.  
  54.     printf("char %d \t\t ->  ", x );
  55.     for (i = 1; i <= ilen; ++i)
  56.     {
  57.         if (x & mask)
  58.             now = '1';
  59.         else
  60.             now = '0';
  61.         putchar(now);
  62.         x <<= 1;
  63.         if (i % 8 == 0)
  64.             putchar(' '); // Разделение байтов
  65.     }
  66.     putchar('\n');
  67.     return;
  68. }
  69.  
  70. void printbit_u_int(unsigned int x)
  71. {
  72.     int i, ilen = sizeof(unsigned int) * 8, mask = 1 << (ilen - 1); // Настройка маски
  73.     char now;
  74.  
  75.     printf("unsigned int %d \t ->  ", x );
  76.     for (i = 1; i <= ilen; ++i)
  77.     {
  78.         if (x & mask)
  79.             now = '1';
  80.         else
  81.             now = '0';
  82.         putchar(now);
  83.         x <<= 1;
  84.         if (i % 8 == 0)
  85.             putchar(' '); // Разделение байтов
  86.     }
  87.     putchar('\n');
  88.     return;
  89. }
  90.  
  91. void printbit_u_sh_int(unsigned short int x)
  92. {
  93.     int i, ilen = sizeof(unsigned short int) * 8, mask = 1 << (ilen - 1); // Настройка маски
  94.     char now;
  95.  
  96.     printf("unsigned short int %d \t ->  ", x );
  97.     for (i = 1; i <= ilen; ++i)
  98.     {
  99.         if (x & mask)
  100.             now = '1';
  101.         else
  102.             now = '0';
  103.         putchar(now);
  104.         x <<= 1;
  105.         if (i % 8 == 0)
  106.             putchar(' '); // Разделение байтов
  107.     }
  108.     putchar('\n');
  109.     return;
  110. }
  111. void printbit_u_char(unsigned char x)
  112. {
  113.     int i, ilen = sizeof(unsigned char) * 8, mask = 1 << (ilen - 1); // Настройка маски
  114.     char now;
  115.  
  116.     printf("unsigned char %d \t ->  ", x );
  117.     for (i = 1; i <= ilen; ++i)
  118.     {
  119.         if (x & mask)
  120.             now = '1';
  121.         else
  122.             now = '0';
  123.         putchar(now);
  124.         x <<= 1;
  125.         if (i % 8 == 0)
  126.             putchar(' '); // Разделение байтов
  127.     }
  128.     putchar('\n');
  129.     return;
  130. }
  131.  
  132.  
  133.  
  134. int main(void) {
  135.  
  136.  
  137.     int i = 100;
  138.     printbit_int(i);
  139.     unsigned int ui = 100;
  140.     printbit_u_int(ui);
  141.     short int si = 100;
  142.     printbit_sh_int(si);
  143.     unsigned short int usi = 100;
  144.     printbit_u_sh_int(usi);
  145.     char c = 100;
  146.     printbit_char(c);
  147.     unsigned char uc = 100;
  148.     printbit_u_char(uc);
  149.  
  150.     return 0;
  151. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement