Advertisement
Guest User

Untitled

a guest
Jun 22nd, 2017
61
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 4.11 KB | None | 0 0
  1. Формирование байта и вывод на экран его двоичного представления
  2.  
  3.  ( функция cod() возвращает упакованные в байт два числа, переданные ей в качестве аргументов; функция binary_pole() выводит на экран двоичное представление байта-параметра):
  4.  
  5. unsigned char cod (int a, int b);
  6. void binary (unsigned char ch);
  7. int main()
  8. { int k, m, n ;
  9.   cout << "m= ?   n=?  : ";
  10.   cin >> m >> n;
  11.   k = cod (m, n);                  //упаковка значений в байт
  12.   cout << "cod= " << hex << k << endl;     //вывод кода
  13.   cout << dec << endl;
  14.   binary_pole (k) ;        //вывод на экран двоичного представления байта
  15.   _getch();
  16.   return 0;
  17. }
  18.  
  19. unsigned char cod (int a, int b)
  20. {union {
  21.         unsigned char z;
  22.         struct {
  23.                 unsigned int x:4;
  24.                 unsigned int y:4;
  25.        } hh;
  26.   } un;
  27.  un.hh.x=a%16 ;           //получение остатков от чисел-аргументов
  28.  un.hh.y=b%16 ;
  29.  return un.z ;            //возвращает символ с полученным кодом 44
  30. }
  31.  
  32. void binary_pole (unsigned char ch) //вывод на экран двоичного представления байта
  33.                                         //через битовые поля
  34. {
  35.   union {                         //определение объединяющего типа
  36.            unsigned char ss;
  37.              struct {
  38.                    unsigned a0:1;  //каждое битовое поле (бит) получает название  
  39.                    unsigned a1:1;
  40.                    unsigned a2:1;
  41.                  unsigned a3:1;
  42.                    unsigned a4:1;
  43.                    unsigned a5:1;
  44.                    unsigned a6:1;
  45.                    unsigned a7:1;
  46.            } byte;        //определение структурной переменной byte из 8 битов,
  47.                             //в которой каждый бит имеет название
  48.   } cod;                 //определение переменной объединения
  49.  
  50.  cod.ss = ch;            //занесение в объединение значения аргумента функции            
  51.  cout << "nomera bitov:   7   6   5   4   3   2   1   0\n";
  52.  cout << "znachenie:   ";
  53.  cout << "   " << cod.byte.a7 << "   " << cod.byte.a6 ; //так как все биты
  54.  cout << "   " << cod.byte.a5 << "   " << cod.byte.a4 ; //имеют названия
  55.  cout << "   " << cod.byte.a3 << "   " << cod.byte.a2 ;
  56.  cout << "   " << cod.byte.a1 << "   " << cod.byte.a0 ;
  57.  cout << endl;
  58. }
  59. ===============================
  60.  
  61. Битовое представление вещественного числа
  62.  
  63. void binary (double x);   //функция вывода представления числа через объединение
  64.  
  65. int main()
  66. {
  67. double x;
  68. cout << "vvedite x" <<"  ";
  69. cin >> x;
  70. binary (x);   //функции передается вещественное число
  71. _getch();
  72. return 0;
  73. }
  74.  
  75. void binary (double x)
  76. {int j,i;
  77.  union {
  78.         double ss;
  79.            unsigned char c[sizeof(double)];
  80.    } cod;
  81.  cod.ss = x; //переменная объединение получила вещественное значение х
  82.                //далее переменная рассматривается как массив байтов,
  83.                //к каждому элементу которого применима побитовая операция &
  84.  for (j = sizeof (double)-1; j >= 0; j--)
  85.    {
  86.     cout << "dvoichnoe predstavlenie byte " << j << ":";
  87.     for (i = 128; i; i >>= 1) //цикл изменения значения переменной i
  88.         // для выделения очередного бита, i=128 – для выделения бита №7
  89.     if ( i & cod.c[j] ) cout << "1";   //выделение бита
  90.     else cout<<"0";
  91.     cout<<"\n";
  92.  }
  93. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement