方向与按位移位/旋转的符号

时间:2012-11-14 14:49:52

标签: function language-agnostic arguments bit-shift

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

x << n
x >> n

x移位n位。

我们想要定义一个功能

bitshift(x, n)

在此之前,我们必须确定哪个班次用于正面负面 n - 每个班次的“标志”是什么(或旋转)方向。

是否有定义或约定?

(请注意,此问题与签名/未签名类型无关)

更新

请注意,我不是要求提供此功能的实现细节,即使它可能有点相关..

类似于方案/类似于lisp的语言中有类似的功能,例如ash,左移为正n

2 个答案:

答案 0 :(得分:1)

由于将移动 k ,所以等于乘以 2 ^ -k ,并将左移等于乘以 2 ^ k ,我认为应该给你一个提示。

注意:我认为这种看法的原因是,在某种意义上将乘法视为更基本的操作而不是除法是常见的,尽管你当然可以争论相反。

答案 1 :(得分:-1)

您可以使用负数作为参数

例如

x&lt;&lt; Ñ

所以如果你想左移两个位置,则传递n = 2 如果你想右移两个位置,则传递n = -2。