Chuyển nhị phân sang thập phân là quá trình chuyển số nhị phân (cơ số 2 chỉ dùng 0 và 1) thành số thập phân tương đương (cơ số 10).
Bài này học chuyển số nhị phân sang thập phân trong PHP bằng các cách khác nhau.
Cách Chuyển Nhị Phân Sang Thập Phân Hoạt Động
Để chuyển nhị phân sang thập phân, nhân mỗi chữ số nhị phân với 2 lũy thừa vị trí (bắt đầu 0 từ phải), rồi cộng tất cả kết quả.
Chuyển Nhị Phân Sang Thập Phân: 1011
Vị trí: 3 2 1 0
Nhị phân: 1 0 1 1
Tính: 1×2³ 0×2² 1×2¹ 1×2⁰ = 8 + 0 + 2 + 1 = 11
Kết quả: 11
Phương Pháp 1: Dùng Hàm Built-in bindec()
PHP cung cấp bindec() chuyển nhị phân trực tiếp sang thập phân.
<?php $binary = "101"; // Chuyển nhị phân sang thập phân dùng bindec() $decimal = bindec($binary); echo "Binary $binary = Decimal $decimal"; ?>
Binary 101 = Decimal 5
Phương Pháp 2: Chuyển Thủ Công Dùng Vòng Lặp
Cách này thủ công tính giá trị thập phân bằng cách duyệt từng chữ số nhị phân.
<?php
$binary = "1011";
$decimal = 0;
$length = strlen($binary);
// Duyệt từng chữ số từ phải sang trái
for ($i = 0; $i < $length; $i++) {
$digit = $binary[$length - $i - 1];
$decimal += $digit * pow(2, $i);
}
echo "Binary $binary = Decimal $decimal";
?>
Binary 1011 = Decimal 11
Phương Pháp 3: Dùng Dịch Bitwise Trái
Phương pháp này dùng thao tác bitwise để chuyển hiệu quả.
<?php
function binaryToDecimalBitwise($binary) {
$decimal = 0;
for ($i = 0; $i < strlen($binary); $i++) {
$decimal = ($decimal << 1) + $binary[$i];
}
return $decimal;
}
$binary = "1111";
$decimal = binaryToDecimalBitwise($binary);
echo "Binary $binary = Decimal $decimal";
?>
Binary 1111 = Decimal 15
So Sánh Các Phương Pháp
| Phương pháp | Time Complexity | Space Complexity | Phù hợp cho |
|---|---|---|---|
| bindec() | O(1) | O(1) | Chuyển đổi đơn giản |
| Manual Loop | O(n) | O(1) | Học thuật toán |
| Bitwise Shift | O(n) | O(1) | Hiệu năng quan trọng |
Kết Luận
Dùng bindec() cho chuyển nhị phân sang thập phân đơn giản trong PHP. Mục đích giáo dục hoặc logic tùy chỉnh, triển khai chuyển thủ công dùng vòng lặp hoặc bitwise.
