我一直试图使用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填充,但是在词的第一位之后(这将导致填充为零),最高位将为零,因此所有未来的位移(无论是>>还是>>>)将导致一个零位。这是一个奇怪的做法,说实话,我不知道你的意图是什么...... –