gpt4 book ai didi

c - 为什么 `& 0xff` 在 Ruby 源代码中会这样执行?

转载 作者:行者123 更新时间:2023-11-30 15:13:24 25 4
gpt4 key购买 nike

在ruby.h中,我发现这个宏很难理解:

#define SYMBOL_P(x) (((VALUE)(x)&0xff)==SYMBOL_FLAG)

我不知道为什么这个&操作是用0xff执行的。不是每个数字 & 0xff 都等于自己吗?

最佳答案

& 是位运算符(AND),(还记得逻辑表吗?)

0 & 0 = 0
1 & 0 = 0
0 & 1 = 0
1 & 1 = 1

那么它在这里做什么?

0xff 是 255 的十六进制二进制(DWORD):00000000 00000000 00000000 11111111

所以假设一个数字 x= any_value

x的表示可以是这样的

???????? ???????? ???????? ????????

每个?可以是 1 或 0

因此应用位运算符 & (AND) 和掩码 0xff 可以得到

  ???????? ???????? ???????? ????????
&
00000000 00000000 00000000 11111111
=
00000000 00000000 00000000 ????????

例如

  00000000 00000000 00000011 00000011
&
00000000 00000000 00000000 11111111
=
00000000 00000000 00000000 00000011
^________________________^ ^______^
zeroed kept

关于c - 为什么 `& 0xff` 在 Ruby 源代码中会这样执行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34648685/

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