2016-12-05 59 views
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++; 

,但我仍然感到困惑的是爲什麼它工作正常;

+0

產品的大小應該是操作數大小的總和。 –

+2

你需要知道字節順序。 –

+4

[字節序(https://en.wikipedia.org/wiki/Endianness) –

回答

2

您可能正在使用的計算機是Little-Endian。在小端機器上,最低有效字節是第一個。