在 javascript 中找到给定位的值
find the value of given bit in javascript
我有一个测试,但我不明白我必须做什么,这可能是因为我没有经常使用位。
测试是这样的:
it('you should be able to find the value of a given bit', function() {
expect(answers.valueAtBit(128, 8)).to.eql(1);
expect(answers.valueAtBit(65, 1)).to.eql(1);
expect(answers.valueAtBit(65, 7)).to.eql(1);
expect(answers.valueAtBit(128, 1)).to.eql(0);
});
这是他们给我的功能:
valueAtBit: function(num, bit) {
},
在该函数中,我必须 return 必须与测试匹配的值。
您可以将整数转换为二进制字符串,例如:
let n = 11
let bin = n.toString(2)
console.log(bin)
这样你只需要得到正确的字符。假设你从右边数(从 1 开始),你可以这样做:
function valueAtBit(num, bit) {
n = num.toString(2)
return bit > n.length
? 0
: n.toString(2)[n.length - bit]
}
console.log(valueAtBit(11, 1))
console.log(valueAtBit(11, 2))
console.log(valueAtBit(11, 3))
console.log(valueAtBit(11, 4))
console.log(valueAtBit(11, 5)) // all zero after this
如果您想进行数学运算,另一种选择是将数字除以 2** 位,然后取 mod:
function valueAtBit(num, bit) {
return Math.floor(num / (2 ** bit)) % 2
}
let num = 523
console.log("number in binary:", num.toString(2))
for (let i = 0; i < 10; i++){
console.log("bit: ", i, valueAtBit(num, i))
}
我有一个测试,但我不明白我必须做什么,这可能是因为我没有经常使用位。
测试是这样的:
it('you should be able to find the value of a given bit', function() {
expect(answers.valueAtBit(128, 8)).to.eql(1);
expect(answers.valueAtBit(65, 1)).to.eql(1);
expect(answers.valueAtBit(65, 7)).to.eql(1);
expect(answers.valueAtBit(128, 1)).to.eql(0);
});
这是他们给我的功能:
valueAtBit: function(num, bit) {
},
在该函数中,我必须 return 必须与测试匹配的值。
您可以将整数转换为二进制字符串,例如:
let n = 11
let bin = n.toString(2)
console.log(bin)
这样你只需要得到正确的字符。假设你从右边数(从 1 开始),你可以这样做:
function valueAtBit(num, bit) {
n = num.toString(2)
return bit > n.length
? 0
: n.toString(2)[n.length - bit]
}
console.log(valueAtBit(11, 1))
console.log(valueAtBit(11, 2))
console.log(valueAtBit(11, 3))
console.log(valueAtBit(11, 4))
console.log(valueAtBit(11, 5)) // all zero after this
如果您想进行数学运算,另一种选择是将数字除以 2** 位,然后取 mod:
function valueAtBit(num, bit) {
return Math.floor(num / (2 ** bit)) % 2
}
let num = 523
console.log("number in binary:", num.toString(2))
for (let i = 0; i < 10; i++){
console.log("bit: ", i, valueAtBit(num, i))
}