gpt4 book ai didi

bitmask - 什么是位掩码和掩码?

转载 作者:行者123 更新时间:2023-12-03 08:33:09 30 4
gpt4 key购买 nike

关于 PHP documentation关于 JSON,它提到了位掩码这个词。维基百科将其定义为面具。我不明白位掩码或掩码或它们是如何有用的。有人可以使用外行的术语而不是行话来解释这些术语吗?

最佳答案

位和字节

在计算中,数字在内部以二进制表示。这意味着,当您为变量使用整数类型时,这实际上在内部表示为 0 和 1 的总和。

您可能知道,一位代表一个 0或一个 1 .八个这些位的串联表示一个字节,例如00000101 ,这是数字 5。
我想你知道数字是如何用二进制表示的,如果不知道,看看 here .

在 PHP 中,一个数字(大部分)是 4 字节长。这意味着您的号码实际上使用了 32 位的内部存储空间。但为了简单起见,在整个答案中,我将使用 8 位数字。

以位为单位存储状态

现在假设您要创建一个保存状态的程序,该状态基于多个值,即一( true )或零( false )。可以将这些值存储在不同的变量中,可以是 bool 值或整数。 或者改为 使用单个整数变量并使用其内部 32 位的每一位来表示不同的真假。

一个例子:00000101 .这里第一位(从右到左读取)为真,代表第一个变量。第二个为假,代表第二个变量。第三个是真的。等等...

这是一种非常紧凑的数据存储方式,用途广泛。

位屏蔽

这就是位掩码的用武之地。听起来很复杂,但实际上非常简单。

位掩码允许您使用在位级别上工作的操作。

  • 编辑字节中的特定位
  • 检查特定位值是否存在。

  • 您实际上申请了 面具 到一个值,在我们的例子中,该值是我们的状态 00000101掩码也是一个二进制数,表示感兴趣的位。

    通过对掩码和状态执行二元运算,可以实现以下目标:
  • AND 运算符提取状态
  • 中位的子集
  • OR 运算符设置状态
  • 中位的子集
  • XOR 运算符在状态
  • 中切换位的子集

    如果我们想将特定值设置为 true,我们可以使用 OR 运算符和以下位掩码来实现:
    Mask:   10000000b
    Value: 00000101b
    ---- OR ---------
    Result: 10000101b

    或者可以使用 AND 运算符从状态中选择特定值:
    Mask:   00000100b
    Value: 00000101b
    ---- AND ---------
    Result: 00000100b

    我建议你更深入地研究它并熟悉术语。一个好的开始可能是 this关联。

    祝你好运!

    关于bitmask - 什么是位掩码和掩码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31575691/

    30 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com