Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Формирование байта и вывод на экран его двоичного представления
- ( функция cod() возвращает упакованные в байт два числа, переданные ей в качестве аргументов; функция binary_pole() выводит на экран двоичное представление байта-параметра):
- unsigned char cod (int a, int b);
- void binary_pole (unsigned char ch);
- int main()
- { int k, m, n ;
- cout << "m= ? n=? : ";
- cin >> m >> n;
- k = cod (m, n); //упаковка значений в байт
- cout << "cod= " << hex << k << endl; //вывод кода
- cout << dec << endl;
- binary_pole (k) ; //вывод на экран двоичного представления байта
- _getch();
- return 0;
- }
- unsigned char cod (int a, int b)
- {union {
- unsigned char z;
- struct {
- unsigned int x:4;
- unsigned int y:4;
- } hh;
- } un;
- un.hh.x=a%16 ; //получение остатков от чисел-аргументов
- un.hh.y=b%16 ;
- return un.z ; //возвращает символ с полученным кодом 44
- }
- void binary_pole (unsigned char ch) //вывод на экран двоичного представления байта
- //через битовые поля
- {
- union { //определение объединяющего типа
- unsigned char ss;
- struct {
- unsigned a0:1; //каждое битовое поле (бит) получает название
- unsigned a1:1;
- unsigned a2:1;
- unsigned a3:1;
- unsigned a4:1;
- unsigned a5:1;
- unsigned a6:1;
- unsigned a7:1;
- } byte; //определение структурной переменной byte из 8 битов,
- //в которой каждый бит имеет название
- } cod; //определение переменной объединения
- cod.ss = ch; //занесение в объединение значения аргумента функции
- cout << "nomera bitov: 7 6 5 4 3 2 1 0\n";
- cout << "znachenie: ";
- cout << " " << cod.byte.a7 << " " << cod.byte.a6 ; //так как все биты
- cout << " " << cod.byte.a5 << " " << cod.byte.a4 ; //имеют названия
- cout << " " << cod.byte.a3 << " " << cod.byte.a2 ;
- cout << " " << cod.byte.a1 << " " << cod.byte.a0 ;
- cout << endl;
- }
- ===========
- Битовое представление вещественного числа
- void binary (double x); //функция вывода представления числа через объединение
- int main()
- {
- double x;
- cout << "vvedite x" <<" ";
- cin >> x;
- binary (x); //функции передается вещественное число
- _getch();
- return 0;
- }
- void binary (double x)
- {int j,i;
- union {
- double ss;
- unsigned char c[sizeof(double)];
- } cod;
- cod.ss = x; //переменная объединение получила вещественное значение х
- //далее переменная рассматривается как массив байтов,
- //к каждому элементу которого применима побитовая операция &
- for (j = sizeof (double)-1; j >= 0; j--)
- {
- cout << "dvoichnoe predstavlenie byte " << j << ":";
- for (i = 128; i; i >>= 1) //цикл изменения значения переменной i
- // для выделения очередного бита, i=128 – для выделения бита №7
- if ( i & cod.c[j] ) cout << "1"; //выделение бита
- else cout<<"0";
- cout<<"\n";
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement