1

我知道他们做什么,我只是不明白你什么时候可以使用他们..

4

3 回答 3

4

当您需要操作数据块(如字节或整数)的各个位时。这经常发生,例如,在处理以下问题的算法中:

  • 加密
  • 压缩
  • 音频/视频处理
  • 网络(协议)
  • 持久性(文件格式)
  • 等等
于 2010-12-26T21:25:59.753 回答
2

我以前用它们做位掩码。假设您有一个项目,其中包含一个项目列表,这些项目可以具有是或否值(例如汽车上的选项)。您可以通过将每个选项分配给数字中的二进制数字来分配一个整数列,该列将为每个选项提供一个值。

Example: 5 = 101 in binary
that would mean:
option 1 - yes
option 2 - no
option 3 - yes

如果您要对此进行查询,您将使用按位 & 或 | 操作员选择正确的项目。

这是一篇更详细的好文章。

于 2010-12-26T21:29:22.617 回答
1

一个示例是,如果您将 (A)RGB 颜色存储为 32 位整数,并且您想要提取各个颜色分量:

red = (rgb >> 16) & 0x000000ff;
green = (rgb >> 8) & 0x000000ff;
blue = rgb & 0x000000ff;

当然,作为高级程序员,您通常更喜欢使用库函数来执行此操作,而不是自己摆弄位。但是该库可能使用按位运算来实现。

于 2010-12-26T21:29:49.927 回答