有兩種不同但相關大小的向量。較大的是(2 * RESOLUTION) + INDEX_OFFSET
(例如2050),較小的只是RESOLUTION
(例如1024)。我相信足夠安全的假設uint16_t
可以用來包含向量索引。對於C++整數,1除以2可靠等於0,而3/2 = 1,5/2 = 2等。
通過將較大的向量迭代通過將resultIndex
增加2來執行。在每次迭代期間,對索引(resultIndex - INDEX_OFFSET)/2
處的較小向量進行賦值。
本質上,代碼依賴於這樣的假設:無論架構如何,無論是INDEX_OFFSET
是奇數還是偶數,上述除以2總是舍入。例如,如果resultIndex
爲0或1,則預期爲0,如果是2或3,則預期爲1,依此類推。這是一個安全的假設,在上面的參數?
N.B.我承認'Dividing integer types - Are results predictable?'的存在,但它似乎並不完全匹配。
以及在非常大的情況下2'2 + 2 = 5'在Woot4Moo的2 – Woot4Moo
:snarky可以很有趣,但在這種情況下,它只是愚蠢的。整體劃分有關於截斷的非常具體的規則,事實是'3/2 == 1'。 –