如何旋转字中的位

2023-12-08

我正在使用 dsPIC33F 和 GCC。我想将一个字中的位向左或向右旋转一次,如下所示:

       MSB             LSB
input: 0101 1101 0101 1101
right: 1010 1110 1010 1110
left : 1011 1010 1011 1010

(如果不清楚,LSB 移动到 MSB 的位置以进行右旋转,反之亦然。)

我的处理器已经有一个向右旋转(rrnc,rrc)和向左旋转指令(rlnc,rlc),所以我希望编译器能够优化它。如果没有,我可能必须使用内联汇编。


您可以将它们写为常规班次的明显组合:

x rol N == x << N | x >> width-N
x ror N == x >> N | x << width-N

where width是您旋转的数字中的位数。

智能编译器可能(我认为会)检测到这种组合并编译为旋转指令。

请注意,它适用于无符号,并且宽度等于您正在处理的机器字中的位数(dsPIC 上的无符号 int 为 16)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何旋转字中的位 的相关文章

  • Postgres 中通用位串与零的比较

    有没有办法在不硬编码位串宽度0的情况下进行非零位串测试 例如 假设我有两个表 用户和功能 每个表都有掩码 我想测试一下 SELECT u name FROM Users u Features f WHERE u mask f mask 匹配
  • 在Python中旋转位

    出于好奇 我想看看将对象的 id 转换为其哈希值的操作在字符串域中是什么样子 而不是使用通常的按位操作 例如 class A pass def my hash a bits format id a 064b rot4 bits 4 bits
  • Python 中的按位运算是如何进行的?

    我今天一直在学习按位运算 我了解到Not 反转所有位 例如 01010 to 10101 这意味着 10应该是 5 但我看到它是 11 每个python命令行 这是 01010 to 11011 只有两位被反转 谁能解释一下为什么不是101
  • 快速、无分支的 unsigned int 绝对差

    我有一个程序 它花费大部分时间计算 RGB 值之间的欧几里德距离 无符号 8 位的 3 元组 Word8 我需要一个快速 无分支的 unsigned int 绝对差函数 这样 unsigned difference Word8 gt Wor
  • 将 int 位转换为 float 位

    我正在创建一个缓冲区 该缓冲区将在横幅中读 写 在其中我可以完全消除 TCP 分段带来的问题 我遇到的唯一问题是浮点变量 除了浮点之外 其他一切都工作正常 我找不到任何有关如何将 int32 位转换为浮点数的信息 将 float 转换为 i
  • 用于编码 RGB 值的位移位和按位运算

    我想将 RGB 颜色编码为单个整数值 假设编码算法如下 int code blue 256 256 green 256 red 如何使用位移位和 或按位运算符对 RGB 分量进行编码 解码 int blueMask 0xFF0000 gre
  • 令人困惑的 PHP 按位 NOT 行为

    在 PHP 中 如果我运行以下简单程序 number 9 var dump number 我的输出是 int 10 这让我很困惑 我thought 是按位NOT操作员 所以我期待类似的事情 if binary 9 is 0000000000
  • 如何在 O(1) 时间内找到二进制数中 1 的个数?

    我知道以前曾问过这个问题 但我正在查看列出的这个特定解决方案here https stackoverflow com a 8871435 1418853 int BitCount unsigned int u unsigned int uC
  • 按位或(在数组上)

    我需要在 Java 中对两个字节数组执行按位或运算 我怎样才能这样做呢 byte a new byte 256 byte b new byte 256 byte c it should contain information i e bit
  • 按位相等

    我需要在两个字节之间执行按位相等 这意味着 例如 如果我有两个字节 00011011 和 00011110 结果是 11111010 我看到的唯一快速方法是使用以下语句 byte a b set input bytes byte c a b
  • 如何使用按位运算符交错 2 个布尔值?

    假设我有两个 4 位值 ABCD and abcd 如何交错它 所以它变成AaBbCcDd 使用按位运算符 伪 C 语言示例 nibble a 0b1001 nibble b 0b1100 char c foo a b print bits
  • 按位运算符的结果是如何产生的?

    我很惊讶我在谷歌上找不到这个听起来简单的问题的答案 在检查了大约十几个不同的页面之后 我只想在这里问 根据这一页 http www leepoint net notes java data expressions bitops html 3
  • 左移 255 位(作为一个字节)

    谁能解释为什么以下内容无法编译 byte b 255 lt lt 1 错误 常量值 510 无法转换为 字节 我期待二进制的以下内容 1111 1110 类型转换难倒了我 C 中的数字文字是int not byte 编译器将评估位移位 因此
  • 将零填充到二进制数中特定位置的命令?

    我需要将零填充到二进制数的特定位置 循环二进制数的数组形式 例如dec2bin 43 添加零并调整大小听起来像是轮子的重新发明 如何在Matlab中有效地将零填充到二进制数 Looping positions 1 3 6 x de2bi 4
  • (x % 64) == (x & 63) 背后的基本原理是什么? [复制]

    这个问题在这里已经有答案了 可能的重复 按位与代替模运算符 https stackoverflow com questions 3072665 bitwise and in place of modulus operator 有人可以解释使
  • 在一个整数中找到另一个整数的 MSB 位置左侧的 N 个连续零位

    问题是 给定一个整数val1然后 给定第二个整数 找到最高位组 最高有效位 的位置val2找到第一个整数生成的位置左侧的未设置位的连续区域 width指定minimum必须在连续中找到的未设置位的数量 即width里面没有 0 这是我的解决
  • ConstantTimeByteEq 如何工作?

    在大神的密码库里 找到了这个函数ConstantTimeByteEq http golang org src pkg crypto subtle constant time go s 897 936 L17 它有什么作用 如何工作 Cons
  • 无需使用abs函数或if语句即可获取绝对值

    我在想如何在不使用的情况下获得整数的绝对值if声明也不abs 起初我使用的是左移位 lt lt 试图将负号移出范围 然后将位右移回原来的位置 但不幸的是它对我不起作用 请让我知道为什么它不起作用以及其他替代方法 From 位摆弄黑客 htt
  • 十六进制数的按位异或

    我们如何在 Python 中对十六进制数进行异或 例如 我想要异或 ABCD and 12EF 答案应该是 B922 我使用了下面的代码 但它给出了错误的结果 xor two strings of different lengths def
  • Python 相当于 Bit Twiddling Hacks 中的 C 代码?

    我有一个位计数方法 我正在尝试尽可能快地实现 我想尝试下面的算法位摆弄黑客 http graphics stanford edu seander bithacks html CountBitsSetParallel 但我不知道 C 什么是

随机推荐

  • React Infinite Scroller - 两个孩子拥有相同的钥匙。 loadMore 函数被调用两次

    我正在尝试使用react infinite scroller 构建类似于facebook 的无限滚动帖子 但是 它在控制台中多次给出相同的错误 遇到两个孩子拥有同一把钥匙 shdj1289 钥匙应该 是唯一的 以便组件在更新时保持其身份 非
  • C 中的枚举不会因无效输入而引发错误

    我正在使用 gcc 并编译了这段代码 它应该抛出一个错误 但它运行成功 enum DIRECTION EAST WEST NORTH SOUTH int main void enum DIRECTION currentDirection 1
  • Dart/Polymer 转换/编译为 JavaScript 后 Chrome 应用程序 CSP 违规

    好吧 之后有很多关于聚合物的类似问题dart2js 我似乎遇到了一个特定于执行此操作但也将其作为 Chrome 应用程序运行的问题 我发现结果根据变压器的顺序而变化 这是预期的 这是我到目前为止的结果 transformers chrome
  • jQuery 当前正则表达式

    我想指定一个具有以下格式的正则表达式 10 10 00 100 45 这个可以去最多 10 位数字 后面跟着一个 dot and 2 位小数 我尝试过这样的事情 document on keypress Amount function e
  • 密码强度验证的正则表达式问题

    我正在寻找一个满足我们的密码要求的正则表达式 密码 必须至少 8 个字符 不能包含空格 同时包含小写和大写字符 至少包含一位数字 包含至少一个特殊字符 即任何非特殊字符 0 9 a z A Z 编写逻辑代码可能会更容易 正则表达式用于匹配模
  • 以编程方式注册广播接收器

    我想知道以编程方式注册广播接收器的最佳实践 方法是什么 我想根据用户选择注册特定的接收者 由于注册是通过清单文件完成的 我想知道是否有适当的方法可以在代码中实现此目的 In your onCreate您可以像这样注册接收器的方法 priva
  • MATLAB - xy曲线下的条纹面积(弯矩分布)[关闭]

    Closed 这个问题需要细节或清晰度 目前不接受答案 我想要实现的是经典的弯矩分布图 可能看起来像这样 我尝试使用面积 xy 和条形图 最后一个是最接近我需要的 但它仍然不是我可以接受的 我可以以任意形式使用数据 While 丹尼尔的回答
  • 检查 BigQuery ARRAY 中是否有多个元素

    对于bigquery标准sql 我正在尝试找出适当的语法来查找数组是否包含 2 个或更多字符串元素 例如如果数组 5 6 7 8 期望的情况是这样的 case 7 OR 8 in unnest myArray WHEN TRUE THEN
  • 如何通过在MySQL中的另一个表中创建行来选择表中的列

    我有三张桌子 税主 项目主控 item tax 里面的值是这样的 tax master tax id tax name tax value 1 Vat 5 2 LBT 8 item master item id Prise 1 30 2 1
  • 如何通过代码访问Android浏览器设置

    有没有办法以编程方式访问和更改标准 Android 浏览器的设置 我认为不会 除非你可以与浏览器设置共享用户ID 即 你是系统供应商 你已经root了手机 浏览器恰好通过意图公开了一种机制 不这么认为 或者可以通过 javascript 来
  • 按返回菜单后如何恢复游戏

    嘿 我正在尝试在我的游戏中制作暂停菜单 当按下转义键时 暂停游戏进入菜单 但现在我希望能够按返回菜单并恢复我的游戏 到目前为止我只能暂停游戏而无法按回 另外 如果我按菜单中的 播放 它将从我的教程场景开始 而不是当前场景 有一个聪明的方法来
  • 开玩笑:语法错误:意外的标记“导出”

    我在中添加了以下内容package json file scripts test node experimental vm modules node modules jest bin jest js jest testEnvironment
  • HashMap 为未找到的键返回默认值?

    是否有可能有一个HashMap为集合中未找到的所有键返回默认值 在 Java 8 中 使用Map getOrDefault 它需要键 如果没有找到匹配的键 则返回值
  • Unity3d - 如何获取动画师的图层 --> 子状态 --> 状态 namehash?

    我正在使用以下结构 层 基础层 gt 子状态 Jump Fall Roll gt 状态 滚动 static int rollState Animator StringToHash What to put here private Anima
  • wso2 ESB 中的 SMS 传输发送器

    最近我读到一篇文章关于使用 WSo2 esb 发送短信通知 不幸的是 它对我不起作用 而且我对其中一些配置也不是 100 确定 以下是我遇到的问题 除了下面的两个文件之外 是否还有其他库文件可用于通过 SMPP 启用 SMS 传输发送器 a
  • 多个数组的数据绑定:{foreach: ...}

    是否可以使用data bind foreach对于多个数组 例如 div do stuff div 如果可能的话 它的正确语法是什么 或者执行此操作的正确方法是什么 除了合并两个数组之外 我不认为有任何官方方法可以这样做 但解决方法是使用
  • javascript 对象模型:奇怪的构造函数属性

    我发现这段代码的行为令人费解 为什么它的构造函数是child not Child 有人可以向我解释一下吗 function Parent this prop1 value1 this prop2 value2 function Child
  • 使用 XSLT 检索 XML 文件名

    如何使用 XSL 1 0 代码检索 XML 源文件名 在 XSLT 2 0 中 有两个相关函数 base uri 和 document uri 在 XSLT 1 0 中 您必须将 URL 或文件名作为参数传递给样式表 除非处理器为此目的提供
  • 使用 javascript 或 jquery 打印 pdf

    当我单击 print gif 按钮时 我需要打印 pdf 文件 我使用 jasperReport 生成它并将其保存在服务器上 现在我发现这个解决方案适用于 Firefox 但不适用于 IE function printPdf var url
  • 如何旋转字中的位

    我正在使用 dsPIC33F 和 GCC 我想将一个字中的位向左或向右旋转一次 如下所示 MSB LSB input 0101 1101 0101 1101 right 1010 1110 1010 1110 left 1011 1010