Sync
This commit is contained in:
parent
6f050a029e
commit
776bba907c
3887 changed files with 59894 additions and 7280 deletions
|
|
@ -1,5 +1,12 @@
|
|||
a <- as.hexmode(35)
|
||||
b <- as.hexmode(42)
|
||||
as.integer(a & b) # 34
|
||||
as.integer(a | b) # 43
|
||||
as.integer(xor(a, b)) # 9
|
||||
# Since R 3.0.0, the base package provides bitwise operators, see ?bitwAnd
|
||||
|
||||
a <- 35
|
||||
b <- 42
|
||||
bitwAnd(a, b)
|
||||
bitwOr(a, b)
|
||||
bitwXor(a, b)
|
||||
bitwNot(a)
|
||||
bitwShiftL(a, 2)
|
||||
bitwShiftR(a, 2)
|
||||
|
||||
# See also http://cran.r-project.org/src/base/NEWS.html
|
||||
|
|
|
|||
|
|
@ -1,13 +1,5 @@
|
|||
intToLogicalBits <- function(intx) as.logical(intToBits(intx))
|
||||
logicalBitsToInt <- function(lb) as.integer(sum((2^(0:31))[lb]))
|
||||
"%AND%" <- function(x, y)
|
||||
{
|
||||
logicalBitsToInt(intToLogicalBits(x) & intToLogicalBits(y))
|
||||
}
|
||||
"%OR%" <- function(x, y)
|
||||
{
|
||||
logicalBitsToInt(intToLogicalBits(x) | intToLogicalBits(y))
|
||||
}
|
||||
|
||||
35 %AND% 42 # 34
|
||||
35 %OR% 42 # 42
|
||||
a <- as.hexmode(35)
|
||||
b <- as.hexmode(42)
|
||||
as.integer(a & b) # 34
|
||||
as.integer(a | b) # 43
|
||||
as.integer(xor(a, b)) # 9
|
||||
|
|
|
|||
|
|
@ -1,8 +1,13 @@
|
|||
library(bitops)
|
||||
bitAnd(35, 42) # 34
|
||||
bitOr(35, 42) # 43
|
||||
bitXor(35, 42) # 9
|
||||
bitFlip(35, bitWidth=8) # 220
|
||||
bitShiftL(35, 1) # 70
|
||||
bitShiftR(35, 1) # 17
|
||||
# Note that no bit rotation is provided in this package
|
||||
intToLogicalBits <- function(intx) as.logical(intToBits(intx))
|
||||
logicalBitsToInt <- function(lb) as.integer(sum((2^(0:31))[lb]))
|
||||
"%AND%" <- function(x, y)
|
||||
{
|
||||
logicalBitsToInt(intToLogicalBits(x) & intToLogicalBits(y))
|
||||
}
|
||||
"%OR%" <- function(x, y)
|
||||
{
|
||||
logicalBitsToInt(intToLogicalBits(x) | intToLogicalBits(y))
|
||||
}
|
||||
|
||||
35 %AND% 42 # 34
|
||||
35 %OR% 42 # 42
|
||||
|
|
|
|||
|
|
@ -1,14 +1,8 @@
|
|||
# As one can see from
|
||||
getDLLRegisteredRoutines(getLoadedDLLs()$base)
|
||||
# R knows functions bitwiseAnd, bitwiseOr, bitwiseXor and bitwiseNot.
|
||||
# Here is how to call them (see ?.Call for the calling mechanism):
|
||||
|
||||
.Call("bitwiseOr", as.integer(12), as.integer(10))
|
||||
.Call("bitwiseXor", as.integer(12), as.integer(10))
|
||||
.Call("bitwiseAnd", as.integer(12), as.integer(10))
|
||||
.Call("bitwiseNot", as.integer(12))
|
||||
|
||||
# It would be easy to embed these calls in R functions, for better readability
|
||||
# Also, it's possible to call these functions on integer vectors:
|
||||
|
||||
.Call("bitwiseOr", c(5L, 2L), c(3L, 8L))
|
||||
library(bitops)
|
||||
bitAnd(35, 42) # 34
|
||||
bitOr(35, 42) # 43
|
||||
bitXor(35, 42) # 9
|
||||
bitFlip(35, bitWidth=8) # 220
|
||||
bitShiftL(35, 1) # 70
|
||||
bitShiftR(35, 1) # 17
|
||||
# Note that no bit rotation is provided in this package
|
||||
|
|
|
|||
14
Task/Bitwise-operations/R/bitwise-operations-5.r
Normal file
14
Task/Bitwise-operations/R/bitwise-operations-5.r
Normal file
|
|
@ -0,0 +1,14 @@
|
|||
# As one can see from
|
||||
getDLLRegisteredRoutines(getLoadedDLLs()$base)
|
||||
# R knows functions bitwiseAnd, bitwiseOr, bitwiseXor and bitwiseNot.
|
||||
# Here is how to call them (see ?.Call for the calling mechanism):
|
||||
|
||||
.Call("bitwiseOr", as.integer(12), as.integer(10))
|
||||
.Call("bitwiseXor", as.integer(12), as.integer(10))
|
||||
.Call("bitwiseAnd", as.integer(12), as.integer(10))
|
||||
.Call("bitwiseNot", as.integer(12))
|
||||
|
||||
# It would be easy to embed these calls in R functions, for better readability
|
||||
# Also, it's possible to call these functions on integer vectors:
|
||||
|
||||
.Call("bitwiseOr", c(5L, 2L), c(3L, 8L))
|
||||
Loading…
Add table
Add a link
Reference in a new issue