英文:
What does ^ do?
问题
我希望这个问题不会太愚蠢...我不知道在Go语言中^
运算符是做什么用的,例如:
a := 3^500
起初我以为它可能是幂运算(pow
),但它肯定不是。它也不是取模运算(%
)。
我尝试查看文档和在Google上搜索,但不幸的是,Google不认为^
是一个搜索词。
英文:
I hope this question is not too stupid... I have no idea what the ^
operator does in Go, e.g.
a := 3^500
At first I thought it must be pow
but it most certainly is not. It's not mod
(%) either.
I've tried looking through the doc and searching on Google, but unfortunately Google doesn't think ^
is a search term.
答案1
得分: 36
与大多数语言一样,caret 运算符是按位异或运算。您可以在整数上使用它。
> 按位异或运算将两个等长的二进制模式进行逻辑异或操作。在每个对应位置上,如果只有第一个位为1或只有第二个位为1,则结果为1;如果两个位都为0或都为1,则结果为0。在这里,我们比较两个位,如果两个位不同,则结果为1,如果两个位相同,则结果为0。
>
> 按位异或运算可以用于反转寄存器中的特定位(也称为切换或翻转)。通过将某个位与1进行按位异或,可以切换该位。例如,给定位模式0010(十进制2),可以通过与一个在第二位和第四位位置上为1的位模式进行按位异或来切换第二位和第四位:
>
> 0010(十进制2)
> XOR 1010(十进制10)
> = 1000(十进制8)
>
> 这种技术可以用于操作表示布尔状态集的位模式。
将 @karmakaze 的评论添加到这个答案中,以提供更多有用的信息:
> 作为一元运算符,它是按位取反的。例如,^uint(0)
在32位机器上的结果是 0xffffffff
,在64位机器上的结果更长。
英文:
As in most languages, the caret operator is a bitwise XOR. You use it on integers.
Wikipedia on the bitwise xor :
> A bitwise XOR takes two bit patterns of equal length and performs the
> logical exclusive OR operation on each pair of corresponding bits. The
> result in each position is 1 if only the first bit is 1 or only the
> second bit is 1, but will be 0 if both are 0 or both are 1. In this we
> perform the comparison of two bits, being 1 if the two bits are
> different, and 0 if they are the same
>
> The bitwise XOR may be used to invert selected bits in a register
> (also called toggle or flip). Any bit may be toggled by XORing it with
> 1. For example, given the bit pattern 0010 (decimal 2) the second and fourth bits may be toggled by a bitwise XOR with a bit pattern
> containing 1 in the second and fourth positions:
>
0010 (decimal 2)
XOR 1010 (decimal 10)
= 1000 (decimal 8)
> This technique may be used to manipulate bit patterns representing sets of
> Boolean states.
Adding the comment from @karmakaze to this answer for more helpful info:
>Also as a unary operator, it's bitwise not. e.g. ^uint(0)
results in the uint
value 0xffffffff
for 32-bit machine and longer for a 64-bit machine.
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论