R 中的按位逻辑运算
按位逻辑运算用于在数字中逐位执行逻辑运算。本文讨论如何在 R 编程语言中使用按位逻辑运算符。
逻辑运算包括:OPERATOR DESCRIPTION SYNTAX bitwOr bitwise OR bitwOr(value1,value2) bitwXor bitwise XOR bitwXor(value1,value2) bitWnot bitwise NOT bitwNot(value) bitwAnd bitwise AND bitwAnd(val1,val2) bitwShiftL Left shift bitwShiftL(shiftvalue,value) bitwShiftR Right shift bitShiftR(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