快捷搜索:  汽车  科技

c语言中位运算符怎么计算(C语言位运算)

c语言中位运算符怎么计算(C语言位运算)//计算 1 ^ b 0001 0010 ------- 0011 //十进制为3示例代码:#include <stdio.h> #include <stdlib.h> //位运算 取反 ~ int main(int argc char* argv[]) { int a = ~1; printf("%d\n" a); return 0; }位运算 取反操作//计算 1|2 值 //二进制换算 0001 0010 ------- 0011 //十进制值为3示例代码:#include <stdio.h> #include <stdlib.h> //位运算 或(|) int main(int argc char* argv[]) { int a = 1; int b =

起因

最近在看wrk(压力测试工具)源码 发现里面使用很多地位运算 这是在工作上很少用到的.位运算是二进制计算的.使用位运算性能会好一些.

位运算主要是包括:

  1. 与(&)
  2. 或(|)
  3. 非(~)
  4. 异或(^)
  5. 左移(<<)
  6. 右移(>>)
1. 与 (&) 真真为真 余为假

0001 //1为真 0为假 0010 // -------- 0000 //值为0

示例代码:

#include <stdio.h> #include <stdlib.h> //位运算 与(&) int main(int argc char* argv[]) { int a = 1; int b = 2; int c = a & b; printf("a&b=%d\n" c); return 0; }

c语言中位运算符怎么计算(C语言位运算)(1)

位运算 与操作

2. 或(|) 假假为假 余为真

//计算 1|2 值 //二进制换算 0001 0010 ------- 0011 //十进制值为3

示例代码:

#include <stdio.h> #include <stdlib.h> //位运算 或(|) int main(int argc char* argv[]) { int a = 1; int b = 2; int c = a | b; printf("a|b=%d\n" c); return 0; }

c语言中位运算符怎么计算(C语言位运算)(2)

位运算 或操作

3. 非(~) 按位取反

//计算 ~1 值 //涉及到补码 这里不详细说 公式计算 -(x 1) -(1 1) //取反值为:-2

示例代码:

#include <stdio.h> #include <stdlib.h> //位运算 取反 ~ int main(int argc char* argv[]) { int a = ~1; printf("%d\n" a); return 0; }

c语言中位运算符怎么计算(C语言位运算)(3)

位运算 取反操作

4. 异或 (^) 真真为假 假假为假 余为真

//计算 1 ^ b 0001 0010 ------- 0011 //十进制为3

示例代码:

#include <stdio.h> #include <stdlib.h> //位运算 异或 ^ int main(int argc char* argv[]) { int a = 1; int b = 2; int c = a ^ b; printf("a^b=%d\n" c); return 0; }

c语言中位运算符怎么计算(C语言位运算)(4)

位运算 异或操作

5. 左移 <<

//计算 1 左移1 0001 ------- 0010 //十进制为2

示例代码:

#include <stdio.h> #include <stdlib.h> //位运算 左移 << int main(int argc char* argv[]) { int a = 1; int b = a << 1; int c = a << 2; int d = a << 3; printf("b=%d\n" b); //左移1位 printf("c=%d\n" c); //左移2位 printf("d=%d\n" d); //左移3位 return 0; }

c语言中位运算符怎么计算(C语言位运算)(5)

位运算 左移操作

6. 右移 >>

//计算 8 右移1位 1000 ------- 0100 //十进制为4

示例代码:

#include <stdio.h> #include <stdlib.h> //位运算 右移 >> int main(int argc char* argv[]) { int a = 8; int b = a >> 1; printf("b=%d\n" b); //右移1位 return 0; }

c语言中位运算符怎么计算(C语言位运算)(6)

位运算 右移操作

个人能力有限 如果您发现有什么不对 请私信我

如果您觉得对您有用的话 可以点个赞或者加个关注 欢迎大家一起进行技术交流

猜您喜欢: