Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么选择2^3在SQL Server中返回1?_Sql_Sql Server_Tsql_Bitwise Operators - Fatal编程技术网

为什么选择2^3在SQL Server中返回1?

为什么选择2^3在SQL Server中返回1?,sql,sql-server,tsql,bitwise-operators,Sql,Sql Server,Tsql,Bitwise Operators,可能重复: 为什么选择2^3在SQL Server中返回1 上面是我遇到的一个面试问题,我不明白为什么它返回1 在谷歌搜索了一下之后,我发现它是一个按位运算符。但我仍然不明白为什么1是一个输出 我有查询、存储过程和T-SQL的基本知识。谁能给我解释一下: 如何在SELECT 2^3中获得1 这些操作员的实际用途是什么 如果有实际用途,那么使用此类运算符时的最佳实践是什么,因为^is运算符 异或真值表 ------- |^|1|0| ------- |1|0|1| ------- |0|1|0|

可能重复:

为什么选择2^3在SQL Server中返回1

上面是我遇到的一个面试问题,我不明白为什么它返回1

在谷歌搜索了一下之后,我发现它是一个按位运算符。但我仍然不明白为什么1是一个输出

我有查询、存储过程和T-SQL的基本知识。谁能给我解释一下:

  • 如何在SELECT 2^3中获得1
  • 这些操作员的实际用途是什么
  • 如果有实际用途,那么使用此类运算符时的最佳实践是什么

    ,因为^is运算符

    异或真值表

    -------
    |^|1|0|
    -------
    |1|0|1|
    -------
    |0|1|0|
    -------
    
    换句话说,在结果中,只有当两个位不同时,我们才有一个

    1 ^ 1 = 0
    1 ^ 0 = 1
    0 ^ 1 = 1
    0 ^ 0 = 0
    
    对你来说,这是最好的选择

    binary - decimal
    00010  - 2
    00011  - 3
    ---------- ^
    00001  - 1
    
    更多关于

    用法

    例如()处理或加密

    a b a^b
    -------
    0 0  0
    0 1  1
    1 0  1
    1 1  0
    
    2   0b10
    3   0b11
    --------
    2^3 0b01 = 1
    
    真正的实际用途是在用作标志时切换位。

    似乎需要使用“电源”功能:)

    2 in binary = 10
    3 in binary = 11
    ^ bitwise (XOR)
    
    10 XOR 11 = 01
    01 binary = 1 in decimal
    
    权力 将给定表达式的值返回到指定的幂

    语法 幂(数值_表达式,y)

    返回8


    PS:当您想将某些数字字段解释为“掩码”数据并使用数字中的位执行操作时,需要使用^operator(和其他位运算符)。

    它是按位异或

    OR和XOR(异或)的真值表是不同的。或表示“如果这些输入中的任何一个为真,则输出为真”。XOR表示“如果一个或另一个输入为真,但不是两个输入都为真,则输出为真”

    或真值表: 假或假=假 真或假=真 假或真=真 真或真=真

    异或真值表: 假异或假=假 真异或假=真 假异或真=真 真异或真=假

    因此,查询所做的是将每个输入转换为二进制,然后对每个位执行XOR。 2^3:


    不知道为什么,但是
    选择POW(2,3)
    应该给你
    8
    !在哪些场景中使用它们以及它们如何影响查询的性能,在哪些场景中使用它们以及它们的备选方案(如果有的话)。当您想要切换用作标志的位时,或者当您想要实现使用它的某些算法时,使用它们。除此之外,您可以忽略它。不,它不是“选择电源(2,3)”。它是“选择2^3”。然后确定。通常一些学生会尝试使用“^”而不是“power”,所以我只是认为是它。:)我记得XOR是
    如果两个输入相同,则为false,否则为true
    ;如果两个输入都为false,则为false,否则为true;)
    select power(2, 3)
    
        00000010 (2) 
    XOR
        00000011 (3)
    = 
        00000001