C++ |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
| #include <iostream>
using namespace std;
union swap_byte
{
void swap();
void set_byte(unsigned short i);
void show_word();
void print();
unsigned short u;
unsigned char c[2];
};
void swap_byte::swap()
{
unsigned char t;
t = c[0];
c[0] = c[1];
c[1] = t;
}
void swap_byte::set_byte(unsigned short i)
{
u = i;
}
void swap_byte::show_word()
{
cout<<u<<endl;
}
void print_byte(unsigned char x)
{
for(size_t i=8;i;--i)
{
cout << ((x >> (i-1)) & 1);
}
cout << " ";
}
void swap_byte::print()
{
print_byte(((unsigned char*)&u)[0]);
print_byte(((unsigned char*)&u)[1]);
cout << endl;
}
int main()
{
swap_byte a;
a.set_byte(2);
a.print();
a.swap();
a.print();
cin.get();
cin.get();
return 0;
} |
|
Я добавил две функции. Теперь сам увидишь как происходит перестановка.
Хочу заметить что младшие байты хранятся по младшему адресу.