3 回答

TA貢獻1775條經(jīng)驗 獲得超11個贊
嘗試使用4294967296而不是1000000000,這會使兩個值重疊,從而不可分割。
無論選擇什么因子,它都必須大于3333333333,而不是小于 。
看看使用較小的值33和11使用 factor會發(fā)生什么10。
33 * 10 + 11 = 341
然后提取:
341 / 10 = 34
341 % 10 = 1

TA貢獻1796條經(jīng)驗 獲得超4個贊
還要考慮位移和另一個按位運算:
word0 = 3333333333
word1 = 1111111111
temp64 = (word0 << 32) | word1
print(temp64)
word00 = temp64 >> 32
word11 = temp64 & 0xFFFFFFFF
print(word00, word11)
>>14316557653012788679
>>3333333333 1111111111

TA貢獻1798條經(jīng)驗 獲得超3個贊
首先,看看 line temp64 = np.uint64(word0) * 1000000000。如果您檢查 類型temp64,它將是 numpy.float64!因此,您需要先將 1000000000 轉(zhuǎn)換為 uint64。
沒有 numpy 看起來更好:
# overlapping case
word0 = 3333333333
word1 = 1111111111
factor = 1000000000
temp64 = word0 * factor
temp64 = temp64 + word1
print(divmod(temp64, factor))
# non-overlapping case
word0 = 3333333333
word1 = 1111111111
factor = 10000000000 #extra zero added
temp64 = word0 * factor
temp64 = temp64 + word1
print(divmod(temp64, factor))
添加回答
舉報