c - '<<' 在 C 中是什么意思?

标签 c bit-manipulation

这是什么意思?

#define WS_RECURSIVE    (1 << 0)

我知道它将定义 WS_Recursive (1 << 0)但是<<是什么意思?什么意思?

谢谢!

最佳答案

<<left shift operator .它正在转移号码 1向左0位,相当于数字 1 .

它通常用于创建标志,可以与| 组合在一起的数字。 (bit or) 并且可以对它们应用各种操作,例如测试标志是否设置、设置标志、移除标志等。

之所以可以将它们组合在一起而不互相干扰是因为每个都是二的幂,这就是使用1 << x的原因。 ,因为这会产生 2 的幂:

1 << 0 == 20 == 1 == 二进制 0001
1 << 1 == 21 == 2 == 二进制 0010
1 << 2 == 22 == 4 == 二进制 0100
1 << 3 == 23 == 8 == 二进制 1000
等等

您可以在此处阅读有关位标志的信息:http://www.codeproject.com/KB/tips/Binary_Guide.aspx

关于c - '<<' 在 C 中是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8438349/

相关文章:

c++ - 错误: invalid conversion from 'char' to 'const char*' [-fpermissive]|

c - 从模数和指数加载 rsa key ,加密字符串,然后进行核心转储

c - 输入重定向和倒带

c - 为什么 C 不像 C++ 和 Java 那样提供语法透明的引用?

c - K&R C 反转功能

c - 带 if 的位运算符

c++ - 从按位或组合确定原始常数

c - 用C写入bmp文件

OpenCV 中的 Android 按位异或错误

java - 删除字节的最后一位