【问题标题】:rightrotate without bitwise operators不带位运算符的右旋转
【发布时间】:2010-08-03 01:09:07
【问题描述】:

如何在不使用任何位运算的情况下对 32 位整数实现右旋转(和左旋转)操作?

我需要这个,因为高级着色器语言 (HLSL) 不允许对数字进行按位运算,并且我需要对我正在尝试实现的特定着色器进行右旋转。

【问题讨论】:

标签: language-agnostic graphics bit-manipulation hlsl math


【解决方案1】:

对于无符号整数,除以 2 并添加 2^32,如果数字是奇数,则右旋转。对于左边,乘以 2,如果大于 2^32 - 1,则加 1。

【讨论】:

  • 注意:根据语言,您可能需要处理溢出和舍入。例如。对于左边,您可能需要在乘以 2 之前减去 2^32。
  • 如果您不需要进位位回绕,那么您可以简单地除以 2 进行左右旋转。
  • @slebetman:那么根据定义,那肯定是轮换而不是轮换?
  • 有符号整数怎么样?
  • 对于有符号整数,我只需将它们转换为无符号整数,进行旋转,然后再转换回来:) 但这有点特定于语言(更不用说懒惰了)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-03-24
  • 1970-01-01
  • 1970-01-01
  • 2016-12-03
  • 2017-03-05
相关资源
最近更新 更多