[英]Getting the same result from Ruby as Javascript for bitwise XOR
這兩個是相同的結果,取模2 32 。 在Ruby中,您可以& 4294967295
使結果與Javascript中的結果相同。
為了涵蓋所有情況,您需要考慮Javascript將二進制值視為帶符號的 32位整數。 另一方面,Ruby將通過& 4294967295
操作生成無符號的 32位整數。
因此,在Java語言中:
c = a ^ b
要在Ruby中獲得相同的結果:
c = (a ^ b) & 4294967295
c -= 4294967296 if c > 2147483647
感謝Mark Adler的初步提示,我認為這是通過算法實現的方法:
max_32_int = (2**32)
c = a ^ b
if c > (max_32_int/2)
c = c - max_32_int
elsif c < -(max_32_int/2)
c = c + max_32_int
end
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.