二进制位决定的,计算机里存的都是二进制数据,001代表十进制的1,010代表2,100代表4,这样就可以最简单的查询权限,比如想测试有没有写权限就测试中间一位是不是1就可以了。另外读写执行也互不影响。所以就用421来代表rwx
这是一个很入门的编程技巧——用二进制数巧妙的表示十进制数。
试想一下,如果不用4 2 1,如果用3 2 1,会发生什么问题呢?
在4 2 1的情况下:
7 = 1 + 2 + 4 代表读写运行权限
5 = 1 + 4 代表读和运行权限
4 = 4 代表读权限
所有rwx,三个权限,以任意情况组合,得到的都是不重复的数字,也就是说,一个数字可以表示3中状态哦。
在3 2 1的情况下:
6 = 1 + 2 + 3 代表读写运行权限
3 = 1 + 2 代表读和运行权限
3 = 3 代表读权限
看见没,3这个状态重复了,你看到3,不知道它表示的是读权限,还是读和运行权限。
为什么4 2 1 就能不重复的表示所有权限呢?
原因很简单,将4,2,1表示为二进制就恍然大悟了:
4: 0000 0100
2: 0000 0010
1: 0000 0001
如果以后想扩展,还可以继续往后添加:
0000 1000 :8
0001 0000 : 32
大家明白了吧!!!