我想在32/64位数据字段中替换位/位(大于1)而不影响其他位.例如:
我有一个64位寄存器,其中第5位和第6位可以取值0,1,2,3.
5:6
0 0
0 1
1 0
1 1
Run Code Online (Sandbox Code Playgroud)
现在,当我读取寄存器时,我得到值0x146(0001 0 10 0 0110).现在我想将第5位和第6位的值更改为01.(现在它是10,十进制是2,我想要在没有其他位受到影响的情况下将其替换为1 e 01)并仅在修改了位5和6的情况下写回寄存器(因此在更改后变为126)
我试过这样做
reg_data=0x146
reg_data |= 1 << shift (shift in this case is 5)
Run Code Online (Sandbox Code Playgroud)
如果我在位5和6处执行该值将变为11(0x3)而不是01(0x1),这是我想要的.
设置一点是可以的,但不止一点,我发现它有点困难.
任何建议都非常感谢.
我已经在 Windows 8 中下载并安装了 Cygwin。我连接了一个 USB 设备并试图在 Cygwin 环境中访问它。
在输入 lsusb 时,我遇到以下错误。它说找不到 lsusb 命令
-bash: lsubs: 命令未找到
我搜索了一下,发现如果我们想使用 lsusb,我们必须安装 usbutils。我尝试通过给出以下命令来做到这一点,但后来发现 cygwin 包列表中没有这样的包。
apt-cyg 安装 usbutils
知道如何通过在 cygwin 中提供 lsusb 来检查连接的 USB 设备吗?