freeCodeCamp/guide/chinese/miscellaneous/bitwise-operators/index.md

47 lines
2.0 KiB
Markdown
Raw Normal View History

---
title: Bitwise Operators
localeTitle: 按位运算符
---
`<<` `>>` `&` `|` `~`和`^`是按位运算符,它们在各个位的级别上对一个或多个位模式或二进制数字进行操作。
## AND运算符
`x & y`
是“按位和”。如果y的x AND的相应位为1则输出的每个位为1否则为0。
## OR运算符
`x | y`
是“按位还是”。如果y的x AND的相应位为0则输出的每个位为0否则为1。
## 补充运算符
`~ x`
返回x的补码 - 通过将每个1切换为0并将每个0切换为1得到的数字。这与-x - 1相同。
## XOR运算符
`x ^ y`
是“按位排他性”还是“。如果y中的该位为0则输出的每个位与x中的相应位相同如果y中的该位为1则它是x中位的补码。
## 算术移位左操作员
`x << y`
返回x其中位向左移位y位右侧的新位为零。这与将x乘以2 \*\* y相同保留数字的符号。当你使用count> = sizeoftype进行移位时大多数编译器都会发出警告。当你这样做时你通常会得到一个0。
## 算术右移算子
`x >> y`
返回x位向右偏移y位。这与将x除以2 \*\* y作为无符号整数相同。负签名号的右移具有实现定义的行为。当你使用count> = sizeoftype进行移位时大多数编译器都会发出警告。向右移位可以用原始最高有效位填充“空”位即执行符号扩展或者它可以以零移位具体取决于平台和/或编译器。
## 逻辑右移算子
`x >>> y`
返回x位向右偏移y位。与算术移位不同逻辑移位不会预先设置符号。例如以8位表示的-2将是11111110因为最高有效位具有负权重。使用算术移位将其向右移一位会给你11111111或-1。然而逻辑右移并不关心价值可能代表一个数字;它只是将所有内容移动到右侧并从左侧填充0。使用逻辑移位将我们的-2右移一位将给出01111111。此运算符不一定存在于所有语言中。