Пусть L и B - две машины. L заказать его бит из LSB
(Младший значащий бит) в MSB (старший значащий бит) при порядке B
от MSB до LSB. Или, другими словами, L использует Little Endian, в то время как
B использует Big Endian бит - не путать с порядком байтов.
Задача 1 решена :
Мы пишем следующий код, который мы хотим переносить:
#include <stdio.h>
int main()
{
unsigned char a = 1;
a <<= 1;
printf("a = %d\n", (int) a);
return 0;
}
на L , будет напечатано 2, но что происходит на B ? Будет ли это сдвинуть
1 и напечатайте 0?.
РЕШЕНИЕ: Определение C99 в 6.5.7 говорит, что, по крайней мере, на
целочисленные типы без знака, <<
и >>
будут умножаться и делиться на 2
соответственно.
Задача 2:
Мы пишем следующий код, который мы хотим переносить:
ПРОЧИТАЙТЕ программу:
/* program READ */
#include <stdio.h>
int main()
{
FILE* fp;
unsigned char a;
fp = fopen("data.dat", "rb");
fread(&a, 1, 1, fp);
fclose(fp);
return 0;
}
и программа WRITE:
/* program WRITE */
#include <stdio.h>
int main()
{
FILE* fp;
unsigned char a = 1;
fp = fopen("data.dat", "wb");
fwrite(&a, 1, 1, fp);
fclose(fp);
return 0;
}
что произойдет, если мы запустим WRITE на L , переместим файл данных в B и
запустить READ там? И если мы запустим WRITE на B , а затем ПРОЧИТАЕМ на L ?
Извините, если это FAQ. Я часами гуглил без удачи.