问:
C语言 位操作
答:
C语言中的位操作主要包括:
1. 移位运算:移位运算用于移动二进制数的位,主要有<<(左移)、>>(右移)和>>>(无符号右移)。左移会在高位补0,右移会在低位补符号位,无符号右移会在低位补0。移位运算可以用于快速计算2的幂以及快速除2。
2. 与运算(&):对两个数进行位与运算,结果是两个运算数的“与”结果,只有两个相应位都是1时结果位才为1,否则为0。位与运算可以用于获取一个数的某几位的值和用于屏蔽某几位。
3. 或运算(|) :对两个数进行位或运算,结果是两个运算数的“或”结果,只要两个相应位有一个为1结果位就是1,否则为0。位或运算可以用于设置一个数的某几位为1。
4. 异或运算(^):对两个数进行位异或运算,结果是两个运算数的“异或”结果,当两个相应位的值相异时,结果为1,相同时结果为0。位异或运算可以用于翻转一个数的某几位的值。
5. 取反运算(~):对一个数进行位取反运算,结果是这个数的反码加1。取反运算可以用于获取一个数的补码。
6. 清零运算(&~):对一个数进行清零运算,结果是把这个数的某几位清零,其他位不变。清零运算结合与运算和取反运算实现。
7. 置位运算(|=):对一个数进行置位运算,结果是把这个数的某几位置为1,其他位不变。置位运算结合或运算实现。
位运算由于在底层使用二进制,所以效率很高,适用于优化程序运行效率。C语言作为一门底层语言,位运算的运用也比较广泛。