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

📅  最后修改于: 2022-05-13 01:54:53.343000             🧑  作者: Mango

R 中的按位逻辑运算

按位逻辑运算用于在数字中逐位执行逻辑运算。本文讨论如何在 R 编程语言中使用按位逻辑运算符。

逻辑运算包括:

OPERATORDESCRIPTIONSYNTAX
bitwOrbitwise ORbitwOr(value1,value2)
bitwXorbitwise XORbitwXor(value1,value2)
bitWnotbitwise NOTbitwNot(value)
bitwAndbitwise ANDbitwAnd(val1,val2)
bitwShiftLLeft shiftbitwShiftL(shiftvalue,value)
bitwShiftRRight shiftbitShiftR(shift,value)

让我们详细讨论这些运算符。

比特

R 编程语言使用 bitwOr函数对两个数字执行按位或运算。它将采用两个值作为输入并返回值。其中 value 可以是数字或列表/向量。

示例



2=0010
3=0011
bitwOr(2,3)   --->  0010
                &   0011
               --------------
                    0011 --->  3

程序:

R
# bitwise or for 2 and 3
print(bitwOr(2,3))
  
# bitwise or for 2 and 4
print(bitwOr(2,4))
  
# bitwise or for 2 and 5
print(bitwOr(2,5))
  
# bitwise or for 78 and 0
print(bitwOr(78,0))


R
s=c(1,2,3,4,5)
  
# s and a are the two vectors
a=c(90,91,92,93,94)
  
# bitwise or operation between
# a ans s vector elements
print(bitwOr(a,s))


R
# range of a values
# each value of a with 
# respect to b
a=10:20
b=58
  
for (i in a){
    print(bitwXor(i,b))
}


R
a=3
b=6
  
# bitwise on 3
print(bitwNot(a))
  
# bitwise on 6
print(bitwNot(b))
print("----------------")
  
# consider values from 1 to 15 
# to perform this operation
values=1:15
for (i in values){
    print(bitwNot(i))
}


Python
# create two vectors a and
# b  with elements
a=c(7058,7059,7056)
b=c(34,45,63)
  
# bitwise on vector a
print(bitwNot(a))
  
# bitwise on vector b
print(bitwNot(b))


R
# bitwise operator between 4 and 3
print(bitwAnd(4,3))
  
# bitwise operator between 4 and 7
print(bitwAnd(4,7))
  
# bitwise operator between  1and 4
print(bitwAnd(1,4))
  
# bitwise operator between 56 and 8
print(bitwAnd(56,8))
  
# bitwise operator between 4 and 0
print(bitwAnd(4,0))


R
s=c(1,2,3,4,5)
  
# s and a are the two vectors
a=c(90,91,92,93,94)
  
# bitwise And operation between
# a ans s vector elements
print(bitwAnd(s,a))


R
# shift 4 by 1 bit
bitwShiftL(1,4)
  
# shift 4 by 2 bit
bitwShiftL(2,4)
  
# shift 4 by 3 bit
bitwShiftL(3,4)
  
# shift 4 by 4 bit
bitwShiftL(4,4)
  
# shift 4 by 5 bit
bitwShiftL(5,4)


R
# shift 1 by 4 bit
bitwShiftR(1,4)
  
# shift 4 by 2 bit
bitwShiftR(4,2)
  
# shift 4 by 3 bit
bitwShiftR(3,4)
  
# shift 16 by 2 bit
bitwShiftR(16,2)
  
# shift 8 by 2 bit
bitwShiftR(8,2)


输出:

[1] 3
[1] 6
[1] 7
[1] 78

bitwOr 也可以在向量上执行

程序:

电阻

s=c(1,2,3,4,5)
  
# s and a are the two vectors
a=c(90,91,92,93,94)
  
# bitwise or operation between
# a ans s vector elements
print(bitwOr(a,s))

输出:

[1] 91 91 95 93 95

位异或

在 R 中,我们可以使用称为 bitwXor() 函数的函数执行按位异或运算。该函数将两个数据作为输入并执行以下操作。它将数字转换为二进制值(位 - 0 和 1)。如果两者相同,则返回 0,否则返回 1。



输入值可以是整数或列表/向量。

示例

5 - 0101
6 - 0110
bitwXOR(5,6)  --->  0101
                ^   0110
               ---------------
                    0011 ---> 3

程序

电阻

# range of a values
# each value of a with 
# respect to b
a=10:20
b=58
  
for (i in a){
    print(bitwXor(i,b))
}

输出:

[1] 48
[1] 49
[1] 54
[1] 55
[1] 52
[1] 53
[1] 42
[1] 43
[1] 40
[1] 41
[1] 46

位不

按位非运算符用于返回给定数字的逆值,即如果 0 则 1,如果 1 则 0。在 R 中,我们可以使用称为 bitwNot() 的函数找到给定数字的按位非。此函数的输入也可以是整数、向量、矩阵、列表等。

例子:

6- 0110
bitwNot(6)   ---->   0110
                  +    1
                 -----------
                     0111 ---> -7

程序

电阻

a=3
b=6
  
# bitwise on 3
print(bitwNot(a))
  
# bitwise on 6
print(bitwNot(b))
print("----------------")
  
# consider values from 1 to 15 
# to perform this operation
values=1:15
for (i in values){
    print(bitwNot(i))
}

输出:



[1] -4
[1] -7
[1] "----------------"
[1] -2
[1] -3
[1] -4
[1] -5
[1] -6
[1] -7
[1] -8
[1] -9
[1] -10
[1] -11
[1] -12
[1] -13
[1] -14
[1] -15
[1] -16

这也可以应用于向量。

程序

Python

# create two vectors a and
# b  with elements
a=c(7058,7059,7056)
b=c(34,45,63)
  
# bitwise on vector a
print(bitwNot(a))
  
# bitwise on vector b
print(bitwNot(b))

输出:

[1] -7059 -7060 -7057
[1] -35 -46 -64

位与

R 语言使用 bitwAnd函数进行按位与运算。其中输入值可以是整数或列表/向量。

例子:

3 - 0011
4 - 0100
bitwAnd(3,4)   ---->  0011
                  &   0100
                 --------------
                      0000  ---> 0

程序

电阻

# bitwise operator between 4 and 3
print(bitwAnd(4,3))
  
# bitwise operator between 4 and 7
print(bitwAnd(4,7))
  
# bitwise operator between  1and 4
print(bitwAnd(1,4))
  
# bitwise operator between 56 and 8
print(bitwAnd(56,8))
  
# bitwise operator between 4 and 0
print(bitwAnd(4,0))

输出:

[1] 0
[1] 4
[1] 0
[1] 8
[1] 0

也可以对向量执行按位 AND。



程序

电阻

s=c(1,2,3,4,5)
  
# s and a are the two vectors
a=c(90,91,92,93,94)
  
# bitwise And operation between
# a ans s vector elements
print(bitwAnd(s,a))

输出:

[1] 0 2 0 4 4

位移位L

R 语言使用 bitwShiftL函数进行按位左移操作。函数的输入是移位值和整数/向量/列表

公式:

N*(2^i)

其中 N 是给定的数字,i 是班次的次数。

例子:

bitwShiftL(1,4) - N=1 and i=4
so, N*(2^i)
1*(2^4)=16

程序

电阻

# shift 4 by 1 bit
bitwShiftL(1,4)
  
# shift 4 by 2 bit
bitwShiftL(2,4)
  
# shift 4 by 3 bit
bitwShiftL(3,4)
  
# shift 4 by 4 bit
bitwShiftL(4,4)
  
# shift 4 by 5 bit
bitwShiftL(5,4)

输出:



16
32
48
64
80

移位寄存器

它将执行右移操作。它将从左向右移动位。

公式:

N*(2/i)

其中 N 是给定的数字,i 是右移的编号。

例子:

bitShiftR(4,1)
here N=4 and i=1
so 4*(2/1)=8

程序

电阻

# shift 1 by 4 bit
bitwShiftR(1,4)
  
# shift 4 by 2 bit
bitwShiftR(4,2)
  
# shift 4 by 3 bit
bitwShiftR(3,4)
  
# shift 16 by 2 bit
bitwShiftR(16,2)
  
# shift 8 by 2 bit
bitwShiftR(8,2)

输出:

0
1
0
4
2