declare @a int,@b int
set @a=5
set @b=10
print @a&@b,@a|@b,@a^@b
执行结果为
 0  15  15
 请问这是怎么得的?

解决方案 »

  1.   

    对两个整数值执行“位与”运算。它会将第一个操作数的每一位与第二个操作数中对应的每一位进行比较。如果两位都是 1,则相应的结果位设置为 1。否则,相应的结果位设置为 0。两个条件都必须是有符号整数类型,或者都必须是无符号整数类型。语法
     integer_expression1 & integer_expression2
            
     参数
    integer_expression1, integer_expression2 
    是有符号或无符号整数数据类型的任意有效表达式。有关详细信息,请参阅 Integration Services 数据类型。结果类型
    由两个参数的数据类型确定。有关详细信息,请参阅表达式中的隐式数据类型转换。注释
    如果任一条件为 Null,则表达式的结果为 Null。示例
      

  2.   

    示例
    此示例对 NumberA 和 NumberB 列执行“位与”运算。NumberA 列包含 3 (0000011),NumberB 列包含 7 (00000111)。 复制代码 
    NumberA & NumberB
     表达式计算结果为 3 (00000011)。0000001100000111-----------00000011此示例对 ReorderPoint 和 SafetyStockLevel 列执行“位与”运算。 复制代码 
    ReorderPoint & SafetyStockLevel
     如果 ReorderPoint 为 10,而 SafetyStockLevel 为 8,则表达式计算结果为 8 (00001000)。0000101000001000-----------00001000此示例对两个整数执行“位与”运算。 复制代码 
    3 & 5 
     表达式计算结果为 1 (00000001)。0000001100000101-----------00000001
      

  3.   

    5:0000 0000 0000 0101 15:0000 0000 0000 1111 5&15 :0000 0000 0000 0101 =5
    5|15 :0000 0000 0000 1111 =15
    5^15 :0000 0000 0000 1010 =10
    SELECT 5&15 
    SELECT 5|15 
    SELECT 5^15 -------------
    --5-------------
    --15-------------
    --10
      

  4.   

    在SQL中,5 和10的转换也是ASCII码值吗?就是按8421码那么换算吗??