希望经过讨论后能得到一个高效的循环左移方法
kali 2020.04
ruby 3.0.0
均以 8bit 为例子
运用数组模拟循环。
def circle_left_array(x, rotate)
len = x.bit_length
a = []
(len - 1).downto(0) { |i| a.push(x[i]) }
a.rotate!(rotate)
return Integer(a.join,2).to_s(10).to_i
end
运用字符串的截位和拼接(在 String 中新增方法)
def cleft_shift(n) #self为2进制串,n为左移次数
n = n % self.length
temp = self[0,n]
return self[n,self.length]+temp
end
这是我目前能够想到的两种方法,如果有更高效的方法希望能够一起交流。