Select Cast(656878503183 as bigint) & Cast(8 as bigint)
Result
8
有人可以幫助我解決這個問題。結果如何達到8?我有點迷失在這。Tsql AND(&)confusion
最後的656878503183
位可以是3
0011 AND
1000
-----
0000
是0
Select Cast(656878503183 as bigint) & Cast(8 as bigint)
Result
8
有人可以幫助我解決這個問題。結果如何達到8?我有點迷失在這。Tsql AND(&)confusion
最後的656878503183
位可以是3
0011 AND
1000
-----
0000
是0
在二進制中,較大的值表示爲1001100011110001000000101000010100001111,並且如果注意到8 1000中,從第4位兩者的權利都是1。因此,bitwise and
操作僅針對該位評估爲1,而對於其他評估則爲0。因此應用bitwise and
到2號的結果將結束0000 .... 1000這又是8
1001100011110001000000101000010100001111
0000000000000000000000000000000000001000
----------------------------------------
0000000000000000000000000000000000001000
注:我用this工具來執行轉換,實際上並沒有評估的事情我自己,所以我建議你仔細檢查轉換是否正確。
請注意,在T-SQL中'AND'和'&'不是等價的運算符。 '&'是[位運算符](http://msdn.microsoft.com/en-us/library/ms176122.aspx),AND是[邏輯運算符](http://msdn.microsoft .COM/EN-US /庫/ ms189773.aspx)。 – Josien 2014-08-29 13:03:42
當基本的東西是「錯誤的」時,假定你犯了一個錯誤,而不是假設語言/工具/等是行爲不當。回去並三重檢查你的所有計算和假設。 – MatBailie 2017-12-13 18:43:59