首先,我们来看一个例子:
如果umask的值为022,创建文件时指定的权限是775,则该文件的实际权限为( )
那么怎么去计算这个值呢?
我们要明白,文件权限的值一般是由八进制数组成的,一般开头为0,识别为八进制,如题目中省略了"0775"。
要计算掩码与指定文件权限的值,我们先将文件权限 775 转换为二进制(其对应关系如下)
7 7 5
111 111 101
再将其掩码umask 022 转换为二进制数
0 2 2
000 010 010
之后我们求掩码的反码,即
原码 000 010 010
反码 111 101 101
最后我们将反码与文件权限的二进制数 进行相与(&)的操作
文件二进制: 111 111 101
umask反码: 111 101 101
&操作之后 111 101 101
再将与后的二进制转换为八进制就得出来最终的结果: 755
最后的最后,希望大家能够回顾一下位运算的一些规律和法则,谢谢大家。
&与,^异或,|或,~非,>>右移,<<左移