神奇的位运算

来源:互联网 发布:草图大师mac版快捷键 编辑:程序博客网 时间:2024/05/28 04:55

神奇的位运算

以下列出我收集的十分神奇而实用的位运算技巧。

 

一、整数

 

1.设置x的第n位为1

x | (1<<n)

 

2.设置x的第n位为0

x & ~(1<<n)

 

3.将x的第n位取反

x ^ (1<<n)

 

4.得到最大的int

int maxInt = ~(1 << 31);int maxInt = (1 << 31) - 1;int maxInt = (1 << -1) - 1;

 

5.得到最小的int

int minInt = 1 << 31;int minInt = 1 << -1;

 

6.计算n乘以2

n << 1;

 

7.计算n除以2

n >> 1;

 

8.计算n乘以2的m次方

n << m;

 

9.就算n除以2的m次方

n >> m;

 

10.判断a和b是否相等

!(a^b)

 

11.判断n是否为奇数

(n & 1) == 1;

 

12.交换a和b的值

//方式1a ^= b;b ^= a;a ^= b;//方式2a = a ^ b ^ (b = a)

 

13.得到x的绝对值

(x ^ (x >> 31)) - (x >> 31);

 

14.得到a和b中较大的数

b & ((a-b) >> 31) | a & (~(a-b) >> 31);

 

15.得到a和b中较小的数

a & ((a-b) >> 31) | b & (~(a-b) >> 31);

 

16.判断a和b是否同正负

(x ^ y) >= 0;

 

17.计算i的相反数

//方式1i = ~i + 1;//方式2i = (i ^ -1) + 1;

 

18.判断n是否为2的若干次方

n > 0 && (n & (n - 1)) == 0;

 

19.拿到x的位于最右的1位

x & (-x)

 

20.拿到x的位于最右的0位

~x & (x+1)

 

21.将x的位于最右的0位设置为1

x | (x+1)

 

22.计算n + 1

-~n

 

23.计算n - 1

~-n

 

二、字符

 

1.将x转换为小写(如果原来就已经为小写则保持)

x | ' '

 

2.将x转换为大写(如果原来就已经为大写则保持)

x & '_'

 

3.大小写互换

x ^ ' '

 

4.得到x在字母表中的位置(大小写都适用)

x & '\x1F'
原创粉丝点击