gpt4 book ai didi

javascript( bool 值 ^ bool 值)

转载 作者:行者123 更新时间:2023-11-30 20:55:22 31 4
gpt4 key购买 nike

我正在重写一些 Javascript 代码以在 Excel VBA 中工作。由于在这个网站上搜索,我已经设法翻译了几乎所有的 Javascript 代码!但是,有些代码我无法准确理解它在做什么。这是一段 Javascript 代码:

var k = x % y;
return (k != 0 && (k > 0 ^ y > 0) && isFinite(y)) ? k + y : k;

第一行对我来说很清楚。 k 是 x/y 的余数。在第二行中,取模得到 k+y 或 k 的值。这是由 (k!=0 && (k > 0 ^ y > 0) && isFinite(y)) 决定的

有人可以逐步向我解释我应该如何阅读这段代码吗?特别是 &&(k>0^y>0)&& 让我很困惑。

这是我到目前为止的进展:

示例 1:x=9 和 y=4

k = 9%4 = 9/4=2 with remainder 1    So: k=1
(1!=0&&(1>0^4>0)&&isFinite(4)) (True AND (True^True) AND True) = True?

示例 1:x=9 和 y=1

k = 9%1 = 9/1=9 with remainder 0    So: k=0
(0!=0&&(0>0^1>0)&&isFinite(1)) (False AND (False^True) AND True) = False?

如果我纯粹从数学 Angular 思考,那么我猜 (False^True) 部分应该读作 (0^1) = 0 = False。

最佳答案

^ 运算符是异或或异或按位运算符。仅当且仅当一个值为真时,它才返回真。如果两者都为真,或者都为假,则结果为假

来自 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Bitwise_Operators#Bitwise_XOR :


a b a 异或 b
0 0 0
0 1 1
1 0 1
1 1 0

至于为什么你的第二个例子返回 FALSE,那是因为你使用了 AND 逻辑:

FALSE && (FALSE ^ TRUE) && TRUE 导致 FALSE && TRUE && TRUE 等同于 FALSE

关于javascript( bool 值 ^ bool 值),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47719193/

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