在Javascript中“打开”特定位[关闭]
Posted
技术标签:
【中文标题】在Javascript中“打开”特定位[关闭]【英文标题】:Turning specific bits 'on' in Javascript [closed] 【发布时间】:2021-03-11 18:15:14 【问题描述】:我正在尝试在 javascript 中解决以下问题:
如果在 8 位数字中放置 2 个(或更多)“on”位,我如何生成正确的数字来表示该字节?例如:
给定数字 1 和 3,这意味着第 1 个最高(最高有效)和第 3 个最高(第 3 个最高有效)位打开,我如何返回 10100000 或 160?给定 1、3 和 7,如何返回 10100010 等?
【问题讨论】:
【参考方案1】:如果我明白了,类似的东西可能会起作用:
const onesToNum = (...args) =>
const binaryStr = '00000000'
.replace(/0/g, (_,idx) =>
args.includes(idx+1) ? '1' : '0')
return parseInt(binaryStr, 2)
console.log(onesToNum(1,3))
【讨论】:
@Bergi :您愿意说明您投反对票的原因吗?【参考方案2】:您为此使用bit shift operator,并使用OR 不同的位:
1<<7 | 1<<5 === 0b10100000
由于您是从左侧 (MSB) 开始计数,并且使用从 1 开始的索引而不是从 0 开始的索引,因此您可以从 8 中减去:
1<<(8-1) | 1<<(8-3) | 1<<(8-7) === 0b10100010
或right-shift256
中的位:
256>>1 | 256>>3 | 256>>7 === 0b10100010
【讨论】:
以上是关于在Javascript中“打开”特定位[关闭]的主要内容,如果未能解决你的问题,请参考以下文章