select id from Table where id = '888888' and (ext_type & 4 = 4 )
这句话后面的(ext_type & 4 = 4 ) 要怎样解释?
数据存储是 1 2 4 8 的和 15
用于判断 1 2 4 8 是否符合这 4 个权限
select id from Table where id = '888888' and (ext_type & 4 = 4 )
这句话后面的(ext_type & 4 = 4 ) 要怎样解释?
数据存储是 1 2 4 8 的和 15
用于判断 1 2 4 8 是否符合这 4 个权限
|
PresbyterApr 8, 2020
1
关键词“8421 码”,“逻辑运算”.
|
|
PTLinApr 8, 2020
3
判断第三位是否被置位
|
|
no1xsyzyApr 8, 2020
4
位运算作 bit test
老的 C 甚至是 asm 的做法了 |
|
caolaApr 8, 2020
5
位运算符:& 按位与, | 按位或, ^ 按位异或
|
|
otakustayApr 8, 2020
6
这是 bit enum 或者 flag enum,搜一下能找到比较详尽的资料
|
|
dapang1221Apr 8, 2020
7
那个 4 换成二进制是 0100,和 ext_type 做与运算,相当于把 ext_type 的第三个 bit 位提取出来,再判断这一位是不是 1
不过 mysql 位运算会全表扫描,这条 sql 有限定 id 了倒是不会全表扫 |
|
shaoyijiongApr 8, 2020
8
字面含义二进制计算 得到的结果十进制后再比较
0100 (4) & 0100 (4) ----- 0100 (4) |
|
AresxueApr 9, 2020
9
把十进制转成二进制就看出规律了, 0100,相当于取第三位, 这个做法比较老但还算常见, linux 的常用权限 755, java 里面对于修饰符的判断都有用到
|