对于逐位移位(或旋转,循环)操作,我们通常有一个操作符,我的意思是其中两个,例如
x << n
x >> n
左或右 x
移位n
位。
我们想要定义一个功能
bitshift(x, n)
在此之前,我们必须确定哪个班次用于正面和负面 n
- 每个班次的“标志”是什么(或旋转)方向。
是否有定义或约定?
(请注意,此问题与签名/未签名类型无关)
请注意,我不是要求提供此功能的实现细节,即使它可能有点相关..
类似于方案/类似于lisp的语言中有类似的功能,例如ash,左移为正n
答案 0 :(得分:1)
由于将右移动 k ,所以等于乘以 2 ^ -k ,并将左移等于乘以 2 ^ k ,我认为应该给你一个提示。
注意:我认为这种看法的原因是,在某种意义上将乘法视为更基本的操作而不是除法是常见的,尽管你当然可以争论相反。
答案 1 :(得分:-1)
您可以使用负数作为参数
例如
x&lt;&lt; Ñ
所以如果你想左移两个位置,则传递n = 2 如果你想右移两个位置,则传递n = -2。