我試圖找出使用按位,加法和/或減法運算符的以下等式的等效表達式。我知道有一個答案(它進一步推廣到任何模2^a-1,其中a是2的冪),但由於某種原因,我似乎無法弄清楚這種關係是什麼。等效表達式
初始表達式:
x = n % (2^32-1);
c = (int)n/(2^32-1); // ints are 32-bit, but x, c, and n may have a greater number of bits
我對所述第一表達過程是採取的2^32的模,然後嘗試彌補兩個模的之間的差異。我在第二部分遇到麻煩。
x = n & 0xFFFFFFFF + difference // how do I calculate difference?
我知道區別n%(2^32)-n%(2^32-1)
是週期性(週期爲2^32*(2^32-1)
),並有一個「秒殺達」開始在2^32-1
倍數和2^32
結束後各2^32
多,差異陰謀減少1(希望我的描述意義)
同樣,第二表達可以以類似的方式來計算:
c = n >> 32 + makeup // how do I calculate makeup?
我想化妝在2^32-1
(並以2^32
的倍數減少1)處穩步增加1,儘管我在用可用的操作員方面表達了這個想法。