【发布时间】:2017-11-09 08:50:03
【问题描述】:
我在 JS 中使用了一些代码,但遇到了这些(不相关的)表达式:
1) var r = (d + Math.random() * 16) % 16 | 0;
2) return c === 'x' ? r : (r & 0x3 | 0x8);
我阅读了一些有关按位运算符的信息,但在这种情况下没有帮助。 有人可以解释(最好是一步一步)它们是如何工作的吗?这两个表达式如何进行逻辑评估和运行?
提前致谢。
【问题讨论】:
-
第一个似乎只是截断数字的技巧。
(2.34 | 0) === 2。第二个看起来很正常......你具体是什么在理解那里有困难? -
在 SO 和 across the internet 上有很多关于位运算符的问题。请包括您从所做的研究中收集到的信息。否则这个问题是“为我阅读这段代码”。我的意思是你可以把每一个操作都做成一个单独的行,然后调试每一个,看看它做了什么。
-
你对二进制表示有基本的了解吗?不要求居高临下,只是想了解您正在寻找什么样的答案。
-
滥用网站并希望有人愿意满足你并不能完全保护你免受那些试图执行规则的人的伤害。在某些情况下,有人可能会回答这种广泛性质的问题,但您不应该对结束投票和规则提醒感到惊讶。
-
对,要么这是重复的,要么是跑题了。
标签: javascript bitwise-operators