```cint find_highest_bit(int n) { int result = 0; while (n > 0) { n >>= 1; result++; } return result;}```上述函数通过不断右移和计数的方式,实现了快速查找一个整数的最高位1。除了上述例子外,位运算还可以应用于很多其他的场景,如位运算哈希、位运算排序、位运算压...
int a = 5; // 二进制表示:0101 int b = 3; // 二进制表示:0011 int result = a & b; // 结果为1,因为二进制的101和0011的按位与结果是0001,也就是十进制的1 按位或(|)按位或操作也适用于每个二进制位,但如果任一二进制位为1,那么结果的相应二进制位就是1,否则是0。例如:in...
在C语言中,`int`类型用作表示整数的数据类型。它支持多种基本算术与逻辑运算,包括:加法、减法、乘法、除法运算:cint result = 10 + 5; // 加法int difference = 10 - 5; // 减法int product = 10 * 5; // 乘法int quotient = 10 / 5; // 除法 取模运算:cint remainder = 10 %...
int a=3; int b = 5; printf("%d",a&b); } 按位与的用途: (1)清零 若想对一个存储单元清零,即使其全部二进制位为0,只要找一个二进制数,其中各个位符合一下条件: 原来的数中为1的位,新数中相应位为0。然后使二者进行&运算,即可达到清零目的。 例:原数为43,即00101011(2),另找一个数,设它为...
C语言的位级运算可以运用到任何“整数”的数据类型上,如char、short、int、long、long long、或者unsigned这样的限定词。基本的位运算有与、或、非、异或等等。 C语言的位移运算有两种:左移、右移。左移运算:xk 表示x向左移动k位,丢弃最高的k位,并在右端补k个0。右
位左移运算简单来说是一个数所有数值位的二进制值向左移动确定位数。 无符号整数例如:10<<5 10<<5 有符号整数例如:-10<<5 -10<<5.png 所有比特位按指定的位数进行左移。 空白位用0补充。 超出整形存储边界都舍弃,例如上图中Int8类型的10,位左运算后置灰部分应舍弃,值为64。若是Int64类型的10,位左运...
unsignedintnum =0xABCD; unsignedcharlowFourBits = num &0x0F; 快速计算乘除 2 的幂次方: 左移一位相当于乘以 2,右移一位相当于除以 2。 代码示例: intnum =5; intdoubled = num <<1;// 10 inthalved = num >>1;// 2 总之,位运算在 C 语言中是一种强大的工具,可以用于优化代码、处理特定的...
位运算就是对字节或字内的二进制数位进行测试、抽取、设置或移位等操作。其操作对象不能是float、double、long double等其他数据类型,只能是char和int类型。 C语言提供如下表格的六种位运算符,其中,只有按位取反运算符为单目运算符,其他运算符都是双目运算符。
int main(){ int n = 0X8FA6002D; printf("%d, %d, %X\n", 9 & 5, -9 & 5, n & 0XFFFF); return 0; } 运行结果: 1, 5, 2D 二、按位或运算(|) 参与|运算的两个二进制位有一个为 1 时,结果就为 1,两个都为 0 时结果才为 0。例如1|1为1,0|0为0,1|0为1,这和逻辑运算中...