一. 英文字母大小写转换
利用或操作 | 和空格将英文字符转换为小写。
('a' | ' ') = 'a'
('A' | ' ') = 'a'利用与操作 & 和下划线将英文字符转换为大写。
('b' & '') = 'B'
('B' & '') = 'B'利用异或操作 ^ 和空格进行英文字符大小写互换。
('d' ^ ' ') = 'D'
('D' ^ ' ') = 'd'
二. 异或交换两个数
int a = 1, b = 2;
a ^= b;
b ^= a;
a ^= b;
此时a = 2,b=1
三. 判断奇偶数
只要根据数的最后一位是 0 还是 1 来决定即可,为 0 就是偶数,为 1 就是奇数
if(0 == (a & 1)) {
//偶数
}
四. 符号交换
交换符号将正数变成负数,负数变成正数
int reversal(int a) {
return ~a + 1;
}
整数取反加1,正好变成其对应的负数(补码表示);负数取反加一,则变为其原码,即正数
五. 求绝对值
整数的绝对值是其本身,负数的绝对值正好可以对其进行取反加一求得,即我们首先判断其符号位(整数右移 31 位得到 ),然后根据符号进行相应的操作int。
int abs(int a) {
int i = a >> 31;
return i == 0 ? a : (~a + 1);
}