decbin(int $num): string
| 参数 | 描述 |
|---|---|
num |
必需。规定要转换的十进制整数。 由于 PHP int 类型是有符号的,负数会按 32 位或 64 位二进制补码处理,取决于平台。 |
返回包含十进制数 num 的二进制表示的字符串。
<?php
echo decbin(12) . "<br>"; // 1100
echo decbin(5) . "<br>"; // 101
echo decbin(0) . "<br>"; // 0
?>
输出:
1100
101
0
<?php
$large_num = 2147483647; // 32位最大正整数
echo "32位最大整数: " . $large_num . "<br>";
echo "二进制: " . decbin($large_num) . "<br>";
// 在64位系统上可以处理更大数值
if (PHP_INT_SIZE == 8) {
$very_large = 9223372036854775807; // 64位最大整数
echo "64位最大整数: " . $very_large . "<br>";
echo "二进制: " . decbin($very_large) . "<br>";
}
?>
输出(64位系统):
32位最大整数: 2147483647
二进制: 1111111111111111111111111111111
64位最大整数: 9223372036854775807
二进制: 111111111111111111111111111111111111111111111111111111111111111
<php
// 使用二进制位来表示权限
define('PERM_READ', 1); // 0001
define('PERM_WRITE', 2); // 0010
define('PERM_EXEC', 4); // 0100
$user_perms = PERM_READ | PERM_WRITE; // 0011 (3)
$group_perms = PERM_READ; // 0001 (1)
$other_perms = PERM_EXEC; // 0100 (4)
echo "用户权限 (3): " . str_pad(decbin($user_perms), 4, '0', STR_PAD_LEFT) . "<br>";
echo "组权限 (1): " . str_pad(decbin($group_perms), 4, '0', STR_PAD_LEFT) . "<br>";
echo "其他权限 (4): " . str_pad(decbin($other_perms), 4, '0', STR_PAD_LEFT);
?>
输出:
用户权限 (3): 0011
组权限 (1): 0001
其他权限 (4): 0100
decbin() 处理负数时返回的是 32 位或 64 位二进制补码表示,具体取决于 PHP 整数大小。base_convert() 或 gmp_strval(gmp_init($num, 10), 2)(需要 GMP 扩展)。