1

对于按位移位(或旋转、循环)操作,我们通常有一个运算符,我的意思是其中两个,例如

x << n
x >> n

用于按位左移右移xn

我们要定义一个函数

bitshift(x, n)

在此之前,我们必须确定,正负使用哪个移位——每个移位 n(或旋转)方向的“符号”是什么。

对此有定义或约定吗?

(请注意,这个问题与有符号/无符号类型无关)

更新

另请注意,我不是在询问此功能的实现细节,即使它可能有些相关..

在类似 scheme/lisp 的语言中也有类似的功能,例如ash,它们为正数进行左移n

4

2 回答 2

1

由于右移k等于乘以2 ^-k,而左移等于乘以2^k,我认为这应该给你一个提示。

注意:我之所以支持这种看待方式的原因是,在某种意义上,通常认为乘法比除法更基本的运算,尽管您当然可以反过来争论。

于 2012-11-14T14:52:43.047 回答
-1

您可以使用负数作为参数

例如

x << n

因此,如果您想左移两个位置,则传递 n=2;如果您想右移两个位置,则传递 n=-2。

于 2012-11-14T15:00:16.467 回答