gpt4 book ai didi

javascript - 位运算符如何工作?

转载 作者:行者123 更新时间:2023-12-01 04:07:56 26 4
gpt4 key购买 nike

所以我在 codewars.com 上遇到了一些问题,并且遇到了一个关于基本加密的问题 ( https://www.codewars.com/kata/basic-encryption/javascript )。目标是获取一个字符串值并将其在 ASCII 图表上向右移动 x 值。

这是我最初的解决方案:

function encrypt(text, rule) {
let res = ''
for(let i = 0; i<text.length; i++) {
res += (String.fromCharCode(text.charCodeAt(i)+rule))
}
return res
};

但是,它没有通过所有测试,所以我查看了解决方案,这就是让我通过测试的原因:

function encrypt(text, rule) {
let res = ''
for(let i = 0; i<text.length; i++) {
res += (String.fromCharCode(text.charCodeAt(i)+rule & 255))
}
return res
};

都是因为添加了 & 255,有人可以向我解释一下,通过添加它使我的代码有效,真正改变了什么?

最佳答案

正如上面有人所说,字符的有效范围是从 0 到 255。有很多方法可以验证此条件,但按位和 看起来是最短的一种。

Bitwise AND returns a one in each bit position for which the corresponding bits of both operands are ones.

例如:

1111 & 0000 将返回 0000

1111 & 0001 将返回 0001

1111 & 0010 将返回 0010

1111 & 0100 将返回 0100

但是,正如您在文档中所读到的:

Bitwise operators perform their operations on such binary representations, but they return standard JavaScript numerical values.

如果对整数使用此运算符,您将得到整数而不是二进制。

就您而言,使用 number & 255 可确保最终值在 0 到 255 的范围内。

您可以阅读有关按位运算符的更多信息 there .

关于javascript - 位运算符如何工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41667340/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com