📌  相关文章
📜  R 中的按位逻辑运算(1)

📅  最后修改于: 2023-12-03 15:19:40.427000             🧑  作者: Mango

R 中的按位逻辑运算

在 R 中,我们可以使用按位逻辑运算符进行位运算,包括按位与、按位或、按位异或、按位左移和按位右移。这些操作可以应用在整数、逐位布尔型向量和二进制字符串上。

按位与

按位与(&)运算符返回两个数按位相 AND 的结果。例如:

4 & 3
# [1] 0
# 4的二进制表示为100,3的二进制表示为011,因此结果为000

1:5 & 3
# [1] 0 1 2 1 0
# 1:5的二进制表示为001,010,011,100,101,与3的二进制表示为011做按位 AND 运算,得到的结果是000,001,010,001,000
按位或

按位或(|)运算符返回两个数按位相 OR 的结果。例如:

4 | 3
# [1] 7
# 4的二进制表示为100,3的二进制表示为011,因此结果为111

1:5 | 3
# [1] 3 3 3 7 7
# 1:5的二进制表示为001,010,011,100,101,与3的二进制表示为011做按位 OR 运算,得到的结果是011,011,011,111,111
按位异或

按位异或(^)运算符返回两个数按位相 XOR(异或)的结果。当两个数的某一位不同时,结果为 1,否则为 0。例如:

4 ^ 3
# [1] 7
# 4的二进制表示为100,3的二进制表示为011,因此结果为111

1:5 ^ 3
# [1] 2 2 8 7 6
# 1:5的二进制表示为001,010,011,100,101,与3的二进制表示为011做按位 XOR 运算,得到的结果是010,010,100,111,110
按位左移

按位左移(<<)运算符将数字的二进制表示向左移动给定的位数。例如:

2 << 2
# [1] 8
# 2的二进制表示为10,向左移动两位变成1000,相当于十进制数 8

7 << 1
# [1] 14
# 7的二进制表示为111,向左移动一位变成1110,相当于十进制数 14
按位右移

按位右移(>>)运算符将数字的二进制表示向右移动给定的位数。向右移位将舍弃最右边的一些位并添加一些 0。例如:

10 >> 1
# [1] 5
# 10的二进制表示为1010,向右移动一位变成0101,相当于十进制数 5

-10 >> 1
# [1] -5
# -10的二进制表示为-1010,向右移动一位变成-0101,相当于十进制数 -5

以上就是 R 中的按位逻辑运算介绍。在处理二进制数据或者进行加密解密时,这些运算符都非常有用。