对2的n次方取余
int quyu(int m,int
n){//n为2的次方
return m & (n - 1);
}
如果是2的幂,n一定是1000...
n-1就是111,所以做与运算结果保留m在n范围的非0的位
上面是网上的示例,没看懂是什么意思,
加入n是8,n的2进制就是1000,n-1就是111,那与m区域为什么要做&运算呢?请前辈们指点迷津
算法:对2的n次方取余,采用位运算符的方式
答案:2 悬赏:40 手机版
解决时间 2021-02-07 20:10
- 提问者网友:山高云阔
- 2021-02-06 23:23
最佳答案
- 五星知识达人网友:雾月
- 2021-02-06 23:51
n - 1意味着比n最高位小的位都为1,而高的位都为0,因此通过与可以剔除位数比n最高位更高的部分,只保留比n最高位小的部分,也就是取余了。
例如: 十进制111对10取余数,显然百位上的1和十位上的1都可以剔除,相当于1对10取余数。
例如: 十进制111对10取余数,显然百位上的1和十位上的1都可以剔除,相当于1对10取余数。
全部回答
- 1楼网友:猎心人
- 2021-02-07 00:04
可以私聊我~
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯