C/C++中的&逻辑与、取反、左移、右移 的一些用法

本文介绍了C/C++中位操作符的常见用途,如利用`&`进行4的倍数计算,`~`取反操作,以及`<<`和`>>`进行快速乘除。通过位操作,可以高效地完成整数处理,例如`len & ~3`用于获取4的最大倍数,`num & 3`用于求除4的余数,以及`num << 2`和`num >> 2`分别用于快速乘4和除4。这些技巧在编程中能提升计算效率。
摘要由CSDN通过智能技术生成

 

1. len & ~3 :计算整数len中4的最大倍数,去掉余数(即等价于:len - len%4)

for(int i=0; i< len & ~3; i++){ //i < (len-len%4)

}

&:这里是 “逻辑与”操作;

~: “取反”,按位取反操作;

详细描述:(1) 数字 3 的二进制表示为(都用八位表示):00000011,则 ~3:  11111100  ;

                  (2) 假设len=15的二进制为( 00001111) ;

                  (3) len的二进制数与~3的二进制进行逻辑与操作 : 00001111 & 11111100 = 00001100(即:12; 也即是:i<12 )

可以看出:得数12正是:15之间最大的4的倍数。15 - 15%4 = 12

实现思想:掩盖len底部最后两位&

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值