2
我乘以一個32位數字與相同的數字以獲得他們的權力2.然後,我想要得到某些位,剩下的部分,但結果取出四捨五入,並不精確。不正確的64位除法
例如,我想計算fec2b8f7 × fec2b8f7 = fd86fb26fffffe51
(16進制數),在MATLAB它出來是這樣的:
>> (((uint64(hex2dec('fec2b8f7'))) * (uint64(hex2dec('fec2b8f7')))))
ans =
fd86fb26fffffe51
這是正確的。從這64位十六進制數我想獲得最高的34位出來,因此要獲得前34位了,你需要擺脫過去的30位的64位,但除以2:
>> (((uint64(hex2dec('fec2b8f7'))) * (uint64(hex2dec('fec2b8f7')))))/uint64(2^30)
ans =
00000003f61bec9c
可悲的是,結果並不正確,因爲它是四捨五入的。正確的結果應該是00000003f61bec9b。
有沒有一種方法可以在沒有四捨五入的情況下從64位數中取出34位?我試過floor
,但它在分區操作完成之前不起作用,這會得到不正確的答案。
謝謝,工作完美。 – 2013-05-11 16:11:41