1. So sánh hệ thống Big Endian và Litle Edian:
- Big
Endian: Byte cao nhất
sẽ
được sắp
đầu
tiên
tức là (nếu hàng ngang thì) xếp phía bên trái ngoài cùng. Liên hệ
slide 45
- Litle Edian: Byte thấp nhất sẽ đc sắp đầu tiên tức là (nếu hàng ngang thì) xếp phía bên trái ngoài cùng.
- Litle Edian: Byte thấp nhất sẽ đc sắp đầu tiên tức là (nếu hàng ngang thì) xếp phía bên trái ngoài cùng.
- Các
hệ
thống
dùng
vi xử
lý
của
intel thì
dùng
nền
tảng
little endian,và
đa
số
đều
vậy
- Các hệ thống dùng chip của solaris, motorola thì dùng big endian
- Các hệ thống dùng chip của solaris, motorola thì dùng big endian
Ví dụ:
--Byte cao nhất-- ------------ ------------ --byte thấp
nhất--số 123456 = 00000000 00000001 11100010 01000000
Số 123456 lần lượt được lưu trong hệ thống Big Endian và Little Endian dưới đây:
______________________________________________________
Trong Big Endian là: 00000000 00000001 11100010 01000000
Little Endian là : 01000000 11100010 00000001 00000000
2. Để xác định hệ thống dùng cách lưu gì ta dùng đoạn mã sau để xác định:
#include <iostream>
using namespace
std;
void main()
{
int i = 0x12345678;
char *p;
p = (char*) &i;
if (*p == 0x78){
printf("Little endian\n");
} else {
printf("Big endian\n");
}
system("pause");
}
3. Ví dụ:
Viết hàm Swap Endian của số int x đưa vào. Ví dụ: int x = 0xA0B0C0D0
--> Kết quả: Endian_Swap(int x) = 0xD0C0B0A0
#include <iostream>
using namespace
std;
int Endian_Swap(int x);//4byte
void main()
{
int x = 0xA0B0C0D0;
printf("Endian_Swap 0x%X\n", Endian_Swap(x));
//output:
0xDOC0B0A0
system("pause");
}
int Endian_Swap(int x)
{
return (
((x >> 24) & 0x000000FF) |
((x >> 8)
& 0x0000FF00) |
((x << 8)
& 0x00FF0000) |
((x << 24) & 0xFF000000)
);
}