加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

Ruby – 从变量获取位范围

发布时间:2020-12-17 04:00:39 所属栏目:百科 来源:网络整理
导读:我有一个变量,并希望从该变量中获取一系列位.我想要最干净的方式来做到这一点. 如果x = 19767并且我想要bit3 – bit8(从右边开始): 100110100110111是二进制的19767. 我想要括号100110(100110)111中的部分所以答案是38. 使用Ruby实现以下功能的最简单/最干
我有一个变量,并希望从该变量中获取一系列位.我想要最干净的方式来做到这一点.

如果x = 19767并且我想要bit3 – bit8(从右边开始):
100110100110111是二进制的19767.
我想要括号100110(100110)111中的部分所以答案是38.

使用Ruby实现以下功能的最简单/最干净/最优雅的方法是什么?

bit_range(orig_num,first_bit,last_bit)

PS.对计算密度较小的答案的奖励积分.

解决方法

19767.to_s(2)[-9..-4].to_i(2)

要么

19767 >> 3 & 0x3f

更新:

汤到坚果(为什么人们这么说呢?)……

class Fixnum
  def bit_range low,high
    len = high - low + 1
    self >> low & ~(-1 >> len << len)
  end
end

p 19767.bit_range(3,8)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读