十进制转八进制转换器

→
八进制 = 反复除以 8 取余数,每一位都是 0-7

十进制转八进制:藏在文件权限背后的那个进制

这个换算在做什么

它把一个 10 进制数写成 8 进制,只使用 0 到 7 这几个数字。八进制如今已经退守到少数几个角落,但其中一个角落非常热闹:Unix 文件权限,像 755 或 644 这样的掩码就是八进制,读法是三位彼此独立的数字,而不是一个整体数值。

一位顶三位,这就是全部理由

一位八进制恰好覆盖三位二进制,所以九位的权限字段能被整齐地切成三组:属主、属组和其他人。这就是为什么算术上早已不用八进制之后,权限记法依然保留了下来。每一组由 4 代表读、2 代表写、1 代表执行相加而成,所以 7 是三样齐全,5 是读加执行。

十进制转八进制对照表

最常见的文件模式和小组掩码背后对应的十进制值。权限那几行值得一眼认出,因为 chmod 收的是八进制,而各种报告打印出来的是十进制。

十进制八进制
00
11
77
810
1012
1517
1620
3137
64100
100144
127177
200310
255377
10001750

八进制的来历与它仅存的地盘

八进制天然适合字长是 3 的倍数的机器,PDP-8 这类早期小型机正是如此。当 8 位字节和 16 位字成为标准之后,十六进制接管了,因为 4 能整除 8,而 3 不能。文件权限是主要的幸存者,靠的是几十年的习惯,以及三位权限位恰好能被 3 整除这一点。

怎么读一位权限数字

把模式里的每一位八进制都当成一个小和:4 是读、2 是写、1 是执行,相加得到你看到的那一位。所以 755 是属主可读写执行,属组和其他人可读可执行;644 是属主可读写,其他人只读。

常见问题

怎样手算十进制转八进制?

用 8 去除,记下余数,再用商继续除,直到商为 0,然后把余数从后往前读。以 493 为例:493 ÷ 8 得 61 余 5,61 ÷ 8 得 7 余 5,7 ÷ 8 得 0 余 7,结果是 755。

为什么文件权限要用八进制写?

因为每一类用户的三位权限正好装进一位八进制,整个模式就能读成三位短数字而不是九位二进制。755 表示可读写执行、可读执行、可读执行,这个格式不需要任何算术就能解读。

chmod 755 到底给了哪些权限?

属主可以读、写和执行;同组用户和其他人只能读和执行,不能修改。换成十进制是 493。目录上这三位含义不同,执行位决定能否进入,所以目录通常都需要把它打开。

八进制还有别的用途吗?

偶尔还有。有些语言允许用前导零写八进制字面量,少数文件格式和网络掩码也会用到它。除此之外都被十六进制取代了,因为一个字节能干净地拆成两位十六进制,而 3 不能整除 8。

负值和小数也能处理吗?

都可以。负数会把符号保留在八进制数字前面,也就是符号加绝对值的形式,而不是补码。小数逐位展开,如果展开不能终止,结果会被标注为已截断,而不是不作说明地四舍五入。

复制下面的代码并粘贴到您的网站,即可添加此换算器。

<!-- 十进制转八进制 -->
<iframe src="https://unitflow.net/zh/embed/decimal-to-octal" title="十进制转八进制" width="100%" height="420" loading="lazy" style="border:0;max-width:100%;display:block"></iframe>
<p><a href="https://unitflow.net/zh/decimal-to-octal" target="_blank" rel="noopener">由 UnitFlow 提供</a></p>