我一直試圖使用scala來通過僅使用移位,強制和切換來反轉位位置。我在想,如果有人能找到我的錯誤,我一直盯着我的代碼太長,現在:)沒有toBinaryString的反向位位置
例子:
1010 1010 -> 0101 0101
1100 1001 -> 1001 0011
這裏是我的代碼大氣壓:
def reverse(word: Byte): Byte = {
var r = 0x00 // Reversed bitstring
for (i <- 0 to 7) {
if ((word >> (7 - i) & 1) == 1) r = r & 1
r >> 1
}
r
}
老:
def reverse(word: Byte) = {
var reversed = 0xFF.toByte
for (i <- 0 to 7) {
if ((word >> i & 1) == 1) {
reversed = reversed >> 1
}
else reversed = reversed >>> 1
}
reversed
}
你知道你在回報中拼錯了'reverced',對嗎? – sfletche
哦,是的,我喜歡。在這裏複製這只是一個錯字。我現在修復它 – Duzzz
您的代碼不能編譯,一開始。你在問如何編譯它,或者修復它產生的錯誤答案?另外,你依靠>> 1填充,但是在詞的第一位之後(這將導致填充爲零),最高位將爲零,因此所有未來的位移(無論是>>還是>>>)將導致一個零位。這是一個奇怪的做法,說實話,我不知道你的意圖是什麼...... –