【发布时间】:2019-02-25 16:42:06
【问题描述】:
给定一个整数
I和一个位掩码M,从I中得到M的对应值。例如,如果I是0x11111并且M是0xff0,则对应的值为0x11
我可以这样做:
- 在
I和M之间执行&操作 - 计算右移多少位
- 右移
但是这种方式有点慢,尤其是第2步。我想要一个更有效的方法来解决这个问题。
【问题讨论】:
-
没有比这更好的方法了。您必须始终知道要向右移动多少位。虽然如果你在谈论代码大小,这个操作当然可以只使用一个语句来完成。
-
慢一点算多慢?多慢才算快?位掩码的可变性是什么 - 是否有一个固定数字可以预先计算右移距离?或者你的位掩码是在某个地方动态生成的,那个地方可以同时生成右移距离吗?
标签: c