1
我试图实现C.改进的连续的乘法算法,其中乘积寄存器的尺寸为被乘数和乘数的两倍的尺寸。在C中,一个int是4个字节,而一个long int是8个字节。我想独立访问更高和更低的32位。所以我指出的低位和高位,如:长整型高和低比特指针
long long int product = 0;
int* high = &product;
int* low = &product;
low++;
但这并没有工作,因为我认为,如果一个int被分配4个字节,然后一个长整型将被分配8个字节,该指针将指向分配的内存的MSB。我不确定这是否实际上是如何分配的。任何人都可以帮我解决这个困惑。
我使用这样做解决了这个问题:
long long int product=0;
int* low = &product;
int* high = &product;
high++;
,但我仍然感到困惑的是为什么它工作正常;
产品的大小应该是操作数大小的总和。 –
你需要知道字节顺序。 –
[字节序(https://en.wikipedia.org/wiki/Endianness) –