作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
关于 PHP documentation关于 JSON,它提到了位掩码这个词。维基百科将其定义为面具。我不明白位掩码或掩码或它们是如何有用的。有人可以使用外行的术语而不是行话来解释这些术语吗?
最佳答案
位和字节
在计算中,数字在内部以二进制表示。这意味着,当您为变量使用整数类型时,这实际上在内部表示为 0 和 1 的总和。
您可能知道,一位代表一个 0
或一个 1
.八个这些位的串联表示一个字节,例如00000101
,这是数字 5。
我想你知道数字是如何用二进制表示的,如果不知道,看看 here .
在 PHP 中,一个数字(大部分)是 4 字节长。这意味着您的号码实际上使用了 32 位的内部存储空间。但为了简单起见,在整个答案中,我将使用 8 位数字。
以位为单位存储状态
现在假设您要创建一个保存状态的程序,该状态基于多个值,即一( true
)或零( false
)。可以将这些值存储在不同的变量中,可以是 bool 值或整数。 或者改为 使用单个整数变量并使用其内部 32 位的每一位来表示不同的真假。
一个例子:00000101
.这里第一位(从右到左读取)为真,代表第一个变量。第二个为假,代表第二个变量。第三个是真的。等等...
这是一种非常紧凑的数据存储方式,用途广泛。
位屏蔽
这就是位掩码的用武之地。听起来很复杂,但实际上非常简单。
位掩码允许您使用在位级别上工作的操作。
00000101
掩码也是一个二进制数,表示感兴趣的位。
Mask: 10000000b
Value: 00000101b
---- OR ---------
Result: 10000101b
Mask: 00000100b
Value: 00000101b
---- AND ---------
Result: 00000100b
关于bitmask - 什么是位掩码和掩码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31575691/
我是一名优秀的程序员,十分优秀!