Advertisement
Guest User

Untitled

a guest
Jun 22nd, 2017
67
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 4.10 KB | None | 0 0
  1. Формирование байта и вывод на экран его двоичного представления
  2.  
  3.  ( функция cod() возвращает упакованные в байт два числа, переданные ей в качестве аргументов; функция binary_pole() выводит на экран двоичное представление байта-параметра):
  4.  
  5. unsigned char cod (int a, int b);
  6. void binary_pole (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.  
  64. void binary (double x);   //функция вывода представления числа через объединение
  65.  
  66. int main()
  67. {
  68. double x;
  69. cout << "vvedite x" <<"  ";
  70. cin >> x;
  71. binary (x);   //функции передается вещественное число
  72. _getch();
  73. return 0;
  74. }
  75.  
  76. void binary (double x)
  77. {int j,i;
  78.  union {
  79.         double ss;
  80.            unsigned char c[sizeof(double)];
  81.    } cod;
  82.  cod.ss = x; //переменная объединение получила вещественное значение х
  83.                //далее переменная рассматривается как массив байтов,
  84.                //к каждому элементу которого применима побитовая операция &
  85.  for (j = sizeof (double)-1; j >= 0; j--)
  86.    {
  87.     cout << "dvoichnoe predstavlenie byte " << j << ":";
  88.     for (i = 128; i; i >>= 1) //цикл изменения значения переменной i
  89.         // для выделения очередного бита, i=128 – для выделения бита №7
  90.     if ( i & cod.c[j] ) cout << "1";   //выделение бита
  91.     else cout<<"0";
  92.     cout<<"\n";
  93.  }
  94. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement