我无法理解&
运算符在以下查询中的用法:
select Flags & 1 from tFlags where Flags = 524675
output: 1
select Flags & 1 from tFlags where Flags = 525698
output: 0
我知道它是按位运算符。我不明白编写查询的人应该知道它是0还是1还是其他任何东西。为什么它等于0或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; 255:除了字节1之外,你可以删除数据。
000010000000010110000010 525698
000000000000000000000001 1 &
------------------------
000000000000000000000000 0
关键是您可以将二进制数和按位操作视为屏蔽,并根据特定位置使用它来设置/重置/ xor值。