Rumah > Soal Jawab > teks badan
如题,正在学习C语言,其中有个知识点是按位运算,跟着书上的介绍和动手去写示例程序明白白其中的原理了。就是对存储在内存中的一个或两个值的位进行运算,也会对两个值进行按位与、按位或、取反等的操作。
自己一点粗略的理解是通过对内存的直接操作可以节省资源提高效率。
请问这个知识点的应用点是在哪里?比如:最常用在什么场景中,大概哪类程序中?再能举几个例子最好拉。
补充:感谢大家的热心回答,基本能解除我的疑惑了。
PHP中文网2017-04-17 13:08:13
如果用位移来计算,最好交给编译器优化,如x<<12,比如直接x*1024.
位常用的一个就是标志位,比如一个功能有哪些特性,可以用位来表示。
如
flag1=0x1
flag2=0x2
flag3=0x4
flag4=0x8
if(flag&flag3){
....
}
黄舟2017-04-17 13:08:13
位运算的意义在于运行效率通常比加减乘除高几倍到几十倍,在很关心速度的算法中常常会采用,例如很多比较底层的算法。缺点是可读性和可维护性差。例子可以看这个网页:https://graphics.stanford.edu/~seander/bithacks.html
此外,用整数表示集合,用位运算进行集合操作,也是一种常见的用法。
迷茫2017-04-17 13:08:13
总的来说,为运算节省空间,速度快,应用的例子有
1.位图索引。比如说qq号或电话号码的去重和查询;
2.位掩码。典型的是linux文件权限;
3.生成伪随机数;
4.格雷码