php中十进制转二进制可用decbin()函数直接转换,返回字符串;手动实现用除2取余倒序法,需单独处理0,还可扩展支持负数和位宽填充。

十进制转二进制在PHP中可用内置函数 decbin() 快速实现,但理解手动转换逻辑更能锻炼编程思维。下面提供两种常用方法:系统函数法和循环取余法。
用 decbin() 函数直接转换
这是最简洁的方式,PHP 内置函数专为此设计,支持整数(正数,不支持负数或小数):
- echo decbin(10); // 输出 "1010"
- echo decbin(255); // 输出 "11111111"
- 注意:返回的是字符串类型,不是数字;输入非整数会自动截断小数部分(如 decbin(13.7) 等价于 decbin(13))
手动实现:除2取余倒序法
模拟手算过程:不断将十进制数除以2,记录余数,直到商为0,再将余数逆序拼接:
- 适用于教学、面试题或需自定义处理(如补零、输出格式控制)
- 关键点:余数从下往上读,所以每次把新余数加到结果字符串前面(或用数组 array_unshift / 最后 strrev)
- 示例代码:
$n = 13;<br>$bin = '';<br>while ($n > 0) {<br> $bin = ($n % 2) . $bin;<br> $n = (int)($n / 2);<br>}<br>echo $bin; // 输出 "1101"
支持0和边界情况的健壮版本
上面的循环法对0无效(循环不执行),需单独处理:
- 输入为0时,直接返回"0"
- 可扩展支持负数(如加符号前缀)或位宽填充(如固定8位:str_pad($bin, 8, '0', STR_PAD_LEFT))
- 完整示例:
function decToBin($n) {<br> if ($n == 0) return '0';<br> $bin = '';<br> $abs = abs($n);<br> while ($abs > 0) {<br> $bin = ($abs % 2) . $bin;<br> $abs = (int)($abs / 2);<br> }<br> return $n }<br>echo decToBin(0); // "0"<br>echo decToBin(-6); // "-110"
验证与调试小技巧
转换后可用 bindec() 反向验证是否正确:
- var_dump(bindec('1010') === 10); // true
- 对批量测试,可写简单循环比对 decbin($i) 和手动结果
- 注意:PHP 整型有平台限制(32/64位),超大数建议用 gmp_init() + gmp_strval()
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











