Pra*_*tik 10 sql t-sql sql-server bitwise-operators
可能重复:
插入符号(^)在SQL查询中做了什么?
为什么SELECT 2 ^ 3在SQL Server中返回1?
以上是我遇到的一个面试问题,无法理解为什么它会返回1.
谷歌搜索后,我发现它是一个按位运算符.但我仍然无法理解为什么1是输出.
我有查询,存储过程和T-SQL的基本知识.有人可以向我解释一下:
如果有实际用途,那么使用此类运营商时的最佳做法是什么
Dam*_*ash 23
因为^是XOR运算符.
XOR的真值表
-------
|^|1|0|
-------
|1|0|1|
-------
|0|1|0|
-------
Run Code Online (Sandbox Code Playgroud)
换句话说,只有当两个位不同时,我们才有一个.
1 ^ 1 = 0
1 ^ 0 = 1
0 ^ 1 = 1
0 ^ 0 = 0
Run Code Online (Sandbox Code Playgroud)
对你来说就是它的情况
binary - decimal
00010 - 2
00011 - 3
---------- ^
00001 - 1
Run Code Online (Sandbox Code Playgroud)
更多关于异或门的信息
用法
Ign*_*ams 11
a b a^b
-------
0 0 0
0 1 1
1 0 1
1 1 0
2 0b10
3 0b11
--------
2^3 0b01 = 1
Run Code Online (Sandbox Code Playgroud)
实际的实际用途是在用作标志时切换位.
小智 6
这是Bitwise Exclusive OR.
OR和XOR(异或)的真值表是不同的.OR表示'如果这些输入中的任何一个为真,则输出为真'.XOR表示'如果一个或另一个,但不是两个输入都为真,则输出为真'
OR真值表:false OR false = false true或false = true false OR true = true true或true = true
XOR真值表:false XOR false = false true XOR false = true false XOR true = true true XOR true = false
所以查询正在做的是将每个输入转换为二进制,然后对每个位进行异或.2 ^ 3:
00000010 (2)
XOR
00000011 (3)
=
00000001
Run Code Online (Sandbox Code Playgroud)