Advertisement
Guest User

Untitled

a guest
Mar 20th, 2019
67
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.34 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <string.h>
  3. #include <limits.h>
  4. #include <locale.h>
  5.  
  6. short BinToDec(char bin[]);
  7. void DecToBin(short dec, char bin[CHAR_BIT + 1]);
  8.  
  9. int main()
  10. {
  11.     setlocale(LC_CTYPE, "Russian");
  12.  
  13.     printf("Введите две строки: ");
  14.     char bin[2][CHAR_BIT + 1];
  15.     char bin1[2][CHAR_BIT + 1];
  16.     short dec[2];
  17.    
  18.     scanf("%s %s", bin[0], bin[1]);
  19.     dec[0] = BinToDec(bin[0]);
  20.     dec[1] = BinToDec(bin[1]);
  21.  
  22.     DecToBin(~dec[0], bin1[0]);
  23.     DecToBin(~dec[1], bin1[1]);
  24.     printf("~%s = %s\n", bin[0], bin1[0]);
  25.     printf("~%s = %s\n\n", bin[1], bin1[1]);
  26.  
  27.     DecToBin(dec[0] & dec[1], bin1[0]);
  28.     printf("%s & %s = %s\n", bin[0], bin[1], bin1[0]);
  29.  
  30.     DecToBin(dec[0] | dec[1], bin1[0]);
  31.     printf("%s | %s = %s\n", bin[0], bin[1], bin1[0]);
  32.  
  33.     DecToBin(dec[0] ^ dec[1], bin1[0]);
  34.     printf("%s ^ %s = %s\n", bin[0], bin[1], bin1[0]);
  35.     return 0;
  36. }
  37.  
  38. short BinToDec(char bin[])
  39. {
  40.     int i = 0, l = strlen(bin);
  41.     short result = 0;
  42.     while (bin[i] != '\0')
  43.     {
  44.         if (bin[i] == '1') result += (short)(1 << (l - i - 1));
  45.         i++;
  46.     }
  47.     return result;
  48. }
  49.  
  50. void DecToBin(short dec, char bin[CHAR_BIT + 1])
  51. {
  52.     int i = CHAR_BIT - 1, k = 0;
  53.     int start_zero = 0;
  54.     while (i >= 0)
  55.     {
  56.         if (((dec >> i) & 1) == 1) start_zero = 1;
  57.         if (start_zero == 1)
  58.         {
  59.             bin[k] = '0' + ((dec >> i) & 1);
  60.             k++;
  61.         }
  62.         i--;
  63.     }
  64.  
  65.     bin[k] = '\0';
  66. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement