R语言 顺位逻辑运算

R语言 顺位逻辑运算

逐位逻辑运算用于在一个数字中逐位执行逻辑运算。这篇文章讨论了在R编程语言中如何使用位逻辑运算。

这些逻辑运算包括

操作符 描述 语法
bitwOr 位数或 bitwOr(value1,value2)
bitwXor 位向XOR bitwXor(value1,value2)
bitWnot 位数非 bitwNot(值)
bitwAnd 位数和 bitwAnd(val1,val2)
bitwShiftL 左移 bitwShiftL(shiftvalue,value)
bitwShiftR 右移 bitShiftR(shift,value)

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

bitwOr

R编程语言使用bitwOr函数对两个数字进行Bitwise OR操作。它将接受两个值作为输入并返回值。其中值可以是数字或列表/向量。

例子:

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

计划

# 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))

输出

[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 and s vector elements
print(bitwOr(a,s))

输出

[1] 91 91 95 93 95

bitwXor

在R语言中,我们可以使用名为bitwXor()的函数来进行位Xor操作。这个函数一次接收两个数据作为输入,并执行以下操作。它将数字转换为二进制值(比特-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

bitwNot

在R语言中,我们可以通过bitwNot()函数找到给定数字的逆运算,即如果0则为1,如果1则为0。这个函数的输入也可以是一个整数、向量、矩阵、列表等。

例子

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

这也可以适用于向量。

程序

# 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

bitwAnd

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

位数和也可以在向量上执行。

程序

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 and s vector elements
print(bitwAnd(s,a))

输出

[1] 0 2 0 4 4

bitwShiftL

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

bitwShiftR

它将执行右移操作。它将把比特从左到右移位。

公式

N*(2/i)

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

例子

bitwShiftR(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

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程