/**
* 十进制数字转二进制 - 位操作
* @param int $number
* @return string
*/
function dec2bin(int $number) {
$len = 8 * PHP_INT_SIZE;
$bin_arr = [];
// 每次 $number 都向右移一位
for ($i = $len; $i >= 0; $i--, $number >>= 1) {
// 1 掩码, 取 $number 最后一位, 即二进制0位
// 只取最后一位的话,结果是十进制的1或0,二进制表示也是一样的
$bin_arr[$i] = $number & 1;
}
ksort($bin_arr);
$bin_str = join('', $bin_arr);
// return $bin_str; // 完整二进制
return ltrim($bin_str, '0');
}
/**
* 把正整数用二进制打印出来
*
* 这里只是体现一下递归函数的反序执行
* @param int $num
*/
function to_binary(int $num) :void {
$r = $num % 2; // 顺序执行 - 调用自身前
if ($num >= 2) {
dec2bin2($num / 2);
}
print $r; // 反序执行 - 调用自身后
}
php 十进制转二进制 - 位操作
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...