"&安培;" transact sql中的运算符用法

时间:2015-10-12 11:06:44

标签: sql-server tsql operator-keyword

我无法理解&运算符在以下查询中的用法:

select Flags & 1 from tFlags where Flags = 524675
output: 1

select Flags & 1 from tFlags where Flags = 525698
output: 0

我知道它是按位运算符。我不明白编写查询的人应该知道它是0还是1还是其他任何东西。为什么它等于0或1

1 个答案:

答案 0 :(得分:3)

<uses-permission android:name="android.permission.INTERNET"/> <application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > <activity android:name=".MainActivity" android:label="@string/app_name"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> 是按位&(仅AND):

<强> LiveDemo

1 & 1 => 1

工作原理:

CREATE TABLE #tFlags(Flags INT);

INSERT INTO #tFlags VALUES (524675), (525698);

select *
       ,[bitwise AND] = CONCAT(Flags, '& 1 = ')
       ,[result]      = Flags & 1  
from #tFlags;

000010000000000110000011   524675
000000000000000000000001   1       &
------------------------
000000000000000000000001   1

简单的答案是:

  • 奇数&amp; 1 = 1
  • 偶数&amp; 1 = 0

修改

数字&amp; 255:除了字节1之外,你可以删除数据。

000010000000010110000010   525698
000000000000000000000001   1       &
------------------------
000000000000000000000000   0   

关键是您可以将二进制数和按位操作视为屏蔽,并根据特定位置使用它来设置/重置/ xor值。