位运算的威力 好厉害~~~
来源:互联网 发布:java excel 日期格式 编辑:程序博客网 时间:2024/09/21 09:00
若要取反和交换,轻轻松松用异或
(1) 判断int型变量a是奇数还是偶数
a&1 = 0 偶数
a&1 = 1 奇数
(2) 取int型变量a的第k位 (k=0,1,2……sizeof(int)),即a>>k&1 (先右移再与1)
(3) 将int型变量a的第k位清0,即a=a&~(1<<k) (10000 取反后为00001 )
(4) 将int型变量a的第k位置1,即a=a|(1<<k)
(5) int型变量循环左移k次,即a=a<<k|a>>16-k (设sizeof(int)=16)
(6) int型变量a循环右移k次,即a=a>>k|a<<16-k (设sizeof(int)=16)
(7)对于一个数 x >= 0,判断是不是2的幂。
boolean power2(int x)
{
return ( (x&(x-1))==0) && (x!=0);
}
(9)计算绝对值
int abs( int x )
{
int y ;
y = x >> 31 ;
return (x^y)-y ; //or: (x+y)^y
}
x= b;
else x= a;
等价于 x= a ^ b ^ x;
(15) x 的 相反数 表示为 (~x+1)
(16)输入2的n次方:1 << 19
(17)乘除2的倍数:千万不要用乘除法,非常拖效率。只要知道左移1位就是乘以2,右移1位就是除以2就行了。比如要算25 * 4,用25 << 2就好啦
实例
功能 | 示例 | 位运算
----------------------+---------------------------+--------------------
去掉最后一位 | (101101->10110) | x >> 1
在最后加一个0 | (101101->1011010) | x < < 1
在最后加一个1 | (101101->1011011) | x < < 1+1
把最后一位变成1 | (101100->101101) | x | 1
把最后一位变成0 | (101101->101100) | x | 1-1
最后一位取反 | (101101->101100) | x ^ 1
把右数第k位变成1 | (101001->101101,k=3) | x | (1 < < (k-1))
把右数第k位变成0 | (101101->101001,k=3) | x & ~ (1 < < (k-1))
右数第k位取反 | (101001->101101,k=3) | x ^ (1 < < (k-1))
取末三位 | (1101101->101) | x & 7
取末k位 | (1101101->1101,k=5) | x & ((1 < < k)-1)
取右数第k位 | (1101101->1,k=4) | x >> (k-1) & 1
把末k位变成1 | (101001->101111,k=4) | x | (1 < < k-1)
末k位取反 | (101001->100110,k=4) | x ^ (1 < < k-1)
把右边连续的1变成0 | (100101111->100100000) | x & (x+1)
把右起第一个0变成1 | (100101111->100111111) | x | (x+1)
把右边连续的0变成1 | (11011000->11011111) | x | (x-1)
取右边连续的1 | (100101111->1111) | (x ^ (x+1)) >> 1
去掉右起第一个1的左边 | (100101000->1000) | x & (x ^ (x-1))
判断奇数 (x&1)==1
判断偶数 (x&1)==0
- 位运算的威力 好厉害~~~
- 位运算的威力
- 位运算的威力
- 位运算的威力
- 位运算的威力
- 位运算的威力
- 位运算的威力
- 位运算的威力
- 位运算的威力
- 位运算的威力
- 位运算的威力
- 位运算的威力
- 位运算符 | << >> & ^ ~的厉害__10进制 To 2进制
- 好厉害的c++ 2010
- 好厉害!
- 2004.07.20,Tue - 好厉害的MM
- 看起来好厉害的一些英文名词
- zzulioj--1832--贪吃的松鼠(位运算好题)
- 【爬虫一】urllib库使用
- 网管的自我修养-人际关系
- python的【字典dict】:创建、访问、更新、删除;查看键、值、键值对;遍历;排序
- 根据出生日期得到是该年的第几天,带一点算法,不用一个月份一个月份的加
- tomcat 的两种启动
- 位运算的威力 好厉害~~~
- 16 IO分离的其他说明
- hive中的Lateral View
- P1064 金明的预算方案
- 安卓系统权限修改(基于tiny4412开发板)
- GSAP
- 修改Linux系统时间
- 网管的自我修养-信息系统
- CentOS 6、7下pptp vpn一键安装脚本