Я пытаюсь реализовать улучшенный алгоритм последовательного умножения в C., где размер регистра продукта в два раза превышает размер умножителя и множителя. в C int имеет 4 байта, а long int составляет 8 байтов. Я хотел получить доступ к более высоким и более низким 32-битам независимо. поэтому я указал на нижние и верхние биты, как:указатели long int high и low bits
long long int product = 0;
int* high = &product;
int* low = &product;
low++;
, но это не сработало, потому что я думал, что если ИНТ отводится 4 байта, то длинный ИНТ будет выделено 8 байт и указатель будет указывать на MSB выделенной памяти. Я не уверен, действительно ли это, как распределение. кто-нибудь может помочь мне очистить эту путаницу.
Я решил эту проблему, используя при этом:
long long int product=0;
int* low = &product;
int* high = &product;
high++;
, но я до сих пор путают, что почему она работает правильно;
Размер продукта должен быть суммой размера операндов. –
Вам нужно знать об истинности. –
[Endianness] (https://en.wikipedia.org/wiki/Endianness) –