返回
用位运算轻松玩转“加减乘除”!让你轻松入门!
后端
2023-09-14 12:32:44
位运算作为计算机科学中的重要技术之一,因其简洁和高效性而广泛应用于各种领域,掌握位运算技巧,无论是开发人员还是计算机爱好者,都能在日常工作或项目开发中获得极大的帮助。
位运算的常用方法
1.判断奇偶数
判断一个整数奇偶与否可以通过查看其二进制表示的末位,1为奇数,0为偶数。
int is_odd(int n) {
return n & 1;
}
2.取反操作
取反操作通过将数字的每一位都从0变为1,或从1变为0,进行翻转。
int bitwise_not(int n) {
return ~n;
}
3.左移和右移操作
左移操作(<<)将数字的二进制表示向左移动一定数量的位,相当于乘以2的幂。右移操作(>>)则相反,将数字的二进制表示向右移动一定数量的位,相当于除以2的幂。
int left_shift(int n, int shift) {
return n << shift;
}
int right_shift(int n, int shift) {
return n >> shift;
}
4.与操作(&)和或操作(|)
与操作(&)比较两个数字的二进制表示,如果对应位置的位都为1,则结果为1,否则为0。或操作(|)则相反,如果对应位置的位有一个为1,则结果为1,否则为0。
int bitwise_and(int a, int b) {
return a & b;
}
int bitwise_or(int a, int b) {
return a | b;
}
5.异或操作(^)
异或操作(^)与或操作类似,但其结果为1当且仅当两个数字的对应位置的位不同时。
int bitwise_xor(int a, int b) {
return a ^ b;
}
6.按位清除
按位清除是清除数字二进制表示中指定位置的位,从而将该位设置为0。
int bitwise_clear(int n, int position) {
return n & ~(1 << position);
}
位运算加减乘除的实现
位运算除了基本的运算外,还可用于实现加减乘除。
1.加法
位运算中的加法是通过将两个数字的二进制表示按位相加来实现的。
int bitwise_add(int a, int b) {
int carry = 0;
int result = 0;
while (a || b || carry) {
int sum = a % 2 + b % 2 + carry;
carry = sum / 2;
result = result * 2 + sum % 2;
a /= 2;
b /= 2;
}
return result;
}
2.减法
位运算中的减法是通过将被减数的二进制表示按位取反,然后与减数按位相加来实现的。
int bitwise_subtract(int minuend, int subtrahend) {
int inverted_subtrahend = ~subtrahend + 1;
return bitwise_add(minuend, inverted_subtrahend);
}
3.乘法
位运算中的乘法是通过重复加法来实现的。
int bitwise_multiply(int a, int b) {
int result = 0;
int temp = a;
while (b) {
if (b % 2) {
result = bitwise_add(result, temp);
}
temp = temp << 1;
b = b >> 1;
}
return result;
}
4.除法
位运算中的除法是通过重复减法来实现的。
int bitwise_divide(int dividend, int divisor) {
int result = 0;
int temp = dividend;
while (temp >= divisor) {
result++;
temp = bitwise_subtract(temp, divisor);
}
return result;
}
位运算在编程中有着广泛的应用,从低级系统优化到高级算法实现,都能发挥作用。掌握位运算技巧,有助于提升编程能力和解决问题的效率。希望这篇文章对您有所帮助,如果您有任何问题或建议,欢迎随时提出!