Kin*_*rog -4 bit-manipulation bitwise-operators
在lamens术语中,什么是按位| 运算符在Javascript中做,为什么:
8 | 1 ; //9
Run Code Online (Sandbox Code Playgroud)
8为二进制= 1000
1,二进制= 0001
如果你取每个二进制数字并将它们视为if语句(1为真,0为假),你会得到:
1 || 0 = 1
0 || 0 = 0
0 || 0 = 0
0 || 1 = 1
Run Code Online (Sandbox Code Playgroud)
结果是1001,十进制为9
如果它是8和1,它将是这样的:
1 && 0 = 0
0 && 0 = 0
0 && 0 = 0
0 && 1 = 0
Run Code Online (Sandbox Code Playgroud)
结果是0
这是一个如何使用这些的快速示例:
如果你想组合面具,你可以使用OR运算符 -
使用文件权限的示例,您可能具有以下标志:
1st bit - execute (bin - 001, dec - 1)
2nd bit - write (bin - 010, dec - 2)
3rd bit - read (bin - 100, dec - 4)
Run Code Online (Sandbox Code Playgroud)
如果你想创建读口罩和执行,你会做这样的事情read value | execute value是1 | 4它会给你5(在仓101)
现在你有了一个掩码,你可以使用&运算符检查文件的权限,看看它是否具有这两种权限:
示例文件1(具有读,写和执行)
它的权限值是7(bin中的111):111和101 = 101,所以它确实有这些权限
示例文件2(具有读写)
它的权限值是6(bin in 110):110&101 = 100,所以它只有100个(dec in 4)perms(读取)的掩码提供的两个