R中是否有轮班操作? C++中有移位操作< /p> >> right shift << left shift >右移

R中是否有轮班操作? C++中有移位操作< /p> >> right shift << left shift >右移,r,R,您可以使用bitwShiftL和bitwShiftR: bitwShiftL(16, 2) #[1] 64 bitwShiftR(16, 2) #[1] 4 这是你的电话号码。从这些函数中额外的代码量以及*和/是原语这一事实来看,它们不太可能比除以/乘以二的等效幂快。在我的一个虚拟机上 microbenchmark::microbenchmark( bitwShiftL(16, 2), 16 * 4, times = 1000L ) #Unit: nanosecond

您可以使用
bitwShiftL
bitwShiftR

bitwShiftL(16, 2)
#[1] 64

bitwShiftR(16, 2)
#[1] 4
这是你的电话号码。从这些函数中额外的代码量以及
*
/
是原语这一事实来看,它们不太可能比除以/乘以二的等效幂快。在我的一个虚拟机上

microbenchmark::microbenchmark(
    bitwShiftL(16, 2),
    16 * 4,
    times = 1000L
)
#Unit: nanoseconds
#              expr  min     lq     mean median   uq    max neval cld
# bitwShiftL(16, 2) 1167 1353.5 2336.779   1604 2067 117880  1000   b
#            16 * 4  210  251.0  564.528    347  470  51885  1000   a

microbenchmark::microbenchmark(
    bitwShiftR(16, 2),
    16 / 4,
    times = 1000L
)
# Unit: nanoseconds
#               expr  min     lq     mean median     uq   max neval cld
#  bitwShiftR(16, 2) 1161 1238.5 1635.131 1388.5 1688.5 39225  1000   b
#               16/4  210  240.0  323.787  280.0  334.0 14284  1000   a


我还应该指出,尝试微优化解释语言可能是浪费时间。如果性能是如此大的关注,你愿意在几小时的时钟周期内劈头发,首先就用C或C++编写程序。p> 一个更具建设性的评论:
??
确实很有帮助。如果键入
??“移位”
??“按位”
在R控制台中,您可以快速进入R的按位运算符(包括移位运算符)的帮助页面。