按位运算小结
来源:互联网 发布:VPN服务器指向域名 编辑:程序博客网 时间:2024/05/08 02:05
之前看python基础语句的时候,看菜鸟教程里面有一个程序非常有意思,当时看半天也没看懂,后来理解了以下,发现虽然它的用途具有很大的局限性,但是却有趣,里面用了很多位运算,值得学习,翻译成c语句如下
#include<stdio.h>
int main(){
for(int i=6;i<=58;i++){
int a = i>>4&3;
int b = i>>2&3;
int c = i&3;
if((a^b)&&(b^c)&&(c^a))
printf("%d %d %d\n",a+1,b+1,c+1);
}
}
这个程序是输出 由 1,2,3,4这四个数 中的任意选3位互不重复的数组成的所有可能情况
从中明白了 如果有一个整数x ,那么x&3===x%4
后来进行尝试,发现了x&7===x%8
进行推广发现,x&n===x%(n+1) //当n属于{x|x=2^k-1,k属于N+}
后来联想到 判断x是否是奇数的判别式可以由 x%2 转换成x&1
位运算的效率传说是最高的
除此之外,还知道了按位或运算 a^b 等价于 a!=b 等价于 a-b
还有右移位运算
若有一个数x,则
x>>1,为x/2
x>>2,为x/4
得到结论x>>n 等价于 x/(2^n)
继而 x*10 等价于 (x<<3) + (x<<1)
阅读全文
0 0
- 按位运算小结
- 位运算小结
- 位运算小结
- 位运算小结操作
- 位运算个人小结
- 位运算小结
- 位运算小结
- 位运算小结(2)
- 逻辑位运算小结5
- 逻辑位运算小结6
- 位运算符小结(转载+修改)
- 关于二进制和位运算(小结)
- 位运算小结(按位与、按位或、按位异或、取反、左移、右移)
- 位运算小结(按位与、按位或、按位异或、取反、左移、右移)
- 按位运算
- 按位运算符
- 按位运算
- 按位运算符
- Android APP开发字体更换
- HTML5开发必备-H5十三水棋牌源码合集
- Java
- MATLAB作图的图例控制
- Android之获取SHA1的方法
- 按位运算小结
- HDU4810 亦或,组合数
- 分类模型的 Loss 为什么使用 cross entropy
- ssd的编译运行问题
- 连衣裙
- 在idea上面将指定的文件恢复到Git上的最近版本
- LSP校验和(Checksum)
- paperweekly
- 从DB中查询字符串并且把它转换为大写时遇到的问题