Nếu bạn có một số thực sự lớn hoặc nếu bạn chỉ đơn giản là không muốn sử dụng
// ES10+ function bin2dec[binStr] { return Array.from[binStr].reverse[].reduce[[total, currValue, index] => [ [currValue === '1'] ? total + [BigInt[2] ** BigInt[index]] : total ], BigInt[0]]; }7 để chuyển đổi chuỗi nhị phân thành số thập phân tương đương, thì bạn có thể chuyển đổi nó theo cách thủ công theo các cách sau
- Sử dụng
// ES10+ function bin2dec[binStr] { return Array.from[binStr].reverse[].reduce[[total, currValue, index] => [ [currValue === '1'] ? total + [BigInt[2] ** BigInt[index]] : total ], BigInt[0]]; }
0 và// ES10+ function bin2dec[binStr] { return Array.from[binStr].reverse[].reduce[[total, currValue, index] => [ [currValue === '1'] ? total + [BigInt[2] ** BigInt[index]] : total ], BigInt[0]]; }
1; - Sử dụng Vòng lặp
// ES10+ function bin2dec[binStr] { return Array.from[binStr].reverse[].reduce[[total, currValue, index] => [ [currValue === '1'] ? total + [BigInt[2] ** BigInt[index]] : total ], BigInt[0]]; }
0 và// ES10+ function bin2dec[binStr] { return Array.from[binStr].reverse[].reduce[[total, currValue, index] => [ [currValue === '1'] ? total + [BigInt[2] ** BigInt[index]] : total ], BigInt[0]]; }
3
Để tìm hiểu về logic đằng sau việc chuyển đổi theo một trong các phương pháp trên, hãy đảm bảo bạn đã đọc về công thức chuyển đổi nhị phân sang thập phân
Sử dụng // ES10+
function bin2dec[binStr] {
return Array.from[binStr].reverse[].reduce[[total, currValue, index] => [
[currValue === '1'] ? total + [BigInt[2] ** BigInt[index]] : total
], BigInt[0]];
}
0 và // ES10+
function bin2dec[binStr] {
return Array.from[binStr].reverse[].reduce[[total, currValue, index] => [
[currValue === '1'] ? total + [BigInt[2] ** BigInt[index]] : total
], BigInt[0]];
}
1
Để chuyển đổi chuỗi nhị phân lớn thành số thập phân, bạn có thể sử dụng phương thức
// ES10+ function bin2dec[binStr] { return Array.from[binStr].reverse[].reduce[[total, currValue, index] => [ [currValue === '1'] ? total + [BigInt[2] ** BigInt[index]] : total ], BigInt[0]]; }1 [được giới thiệu trong ES5] cùng với
// ES10+ function bin2dec[binStr] { return Array.from[binStr].reverse[].reduce[[total, currValue, index] => [ [currValue === '1'] ? total + [BigInt[2] ** BigInt[index]] : total ], BigInt[0]]; }0 [được giới thiệu trong ES10] như vậy________số 8
Điều này tương đương với việc sử dụng phương pháp
// ES10+ function bin2dec[binStr] { return Array.from[binStr].reverse[].reduce[[total, currValue, index] => [ [currValue === '1'] ? total + [BigInt[2] ** BigInt[index]] : total ], BigInt[0]]; }8 với phương pháp
// ES10+ function bin2dec[binStr] { return Array.from[binStr].reverse[].reduce[[total, currValue, index] => [ [currValue === '1'] ? total + [BigInt[2] ** BigInt[index]] : total ], BigInt[0]]; }9, ví dụ như vậy.
// ES10+ function bin2dec[binStr] { return Array.from[binStr].reverse[].reduce[[total, currValue, index] => [ [currValue === '1'] ? total + [BigInt[2] ** BigInt[index]] : total ], BigInt[0]]; }
Với một trong hai biến thể của hàm, bạn sẽ nhận được kết quả tương tự. Ví dụ
// ES10+ function bin2dec[binStr] { return Array.from[binStr].reverse[].reduce[[total, currValue, index] => [ [currValue === '1'] ? total + [BigInt[2] ** BigInt[index]] : total ], BigInt[0]]; }2
Để tìm hiểu về logic đằng sau việc chuyển đổi, hãy đảm bảo bạn đã đọc về công thức chuyển đổi nhị phân sang thập phân
Sử dụng Vòng lặp // ES10+
function bin2dec[binStr] {
return Array.from[binStr].reverse[].reduce[[total, currValue, index] => [
[currValue === '1'] ? total + [BigInt[2] ** BigInt[index]] : total
], BigInt[0]];
}
0 và // ES10+
function bin2dec[binStr] {
return Array.from[binStr].reverse[].reduce[[total, currValue, index] => [
[currValue === '1'] ? total + [BigInt[2] ** BigInt[index]] : total
], BigInt[0]];
}
3
Nếu bạn muốn viết một hàm hiệu quả hơn là sử dụng
// ES10+ function bin2dec[binStr] { return Array.from[binStr].reverse[].reduce[[total, currValue, index] => [ [currValue === '1'] ? total + [BigInt[2] ** BigInt[index]] : total ], BigInt[0]]; }1, thì những điều sau đây có thể hữu ích
// ES10+ function bin2dec[binStr] { return Array.from[binStr].reverse[].reduce[[total, currValue, index] => [ [currValue === '1'] ? total + [BigInt[2] ** BigInt[index]] : total ], BigInt[0]]; }6
Thay vào đó, bạn có thể sử dụng mảng chuỗi nhị phân đảo ngược thay vì dựa vào "
// ES10+ function bin2dec[binStr] { return Array.from[binStr].reverse[].reduce[[total, currValue, index] => [ [currValue === '1'] ? total + [BigInt[2] ** BigInt[index]] : total ], BigInt[0]]; }23", như vậy
// ES10+ function bin2dec[binStr] { return Array.from[binStr].reverse[].reduce[[total, currValue, index] => [ [currValue === '1'] ? total + [BigInt[2] ** BigInt[index]] : total ], BigInt[0]]; }8
Với một trong hai biến thể của hàm, bạn sẽ nhận được kết quả tương tự. Ví dụ
// ES10+ function bin2dec[binStr] { return Array.from[binStr].reverse[].reduce[[total, currValue, index] => [ [currValue === '1'] ? total + [BigInt[2] ** BigInt[index]] : total ], BigInt[0]]; }2
Để tìm hiểu về logic đằng sau việc chuyển đổi, hãy đảm bảo bạn đã đọc về công thức chuyển đổi nhị phân sang thập phân
Công thức chuyển đổi nhị phân sang thập phân là gì?
Giả sử bạn có một số nhị phân
// ES10+ function bin2dec[binStr] { return Array.from[binStr].reverse[].reduce[[total, currValue, index] => [ [currValue === '1'] ? total + [BigInt[2] ** BigInt[index]] : total ], BigInt[0]]; }24 và bạn muốn chuyển đổi nó thành số thập phân tương đương [trong trường hợp này là
// ES10+ function bin2dec[binStr] { return Array.from[binStr].reverse[].reduce[[total, currValue, index] => [ [currValue === '1'] ? total + [BigInt[2] ** BigInt[index]] : total ], BigInt[0]]; }25]. Để làm điều đó, bước đầu tiên là liệt kê các lũy thừa [tăng dần theo thứ tự] của _______ 126 cho tất cả các chữ số của số nhị phân bắt đầu từ phía bên tay phải. Ví dụ
// ES10+ function bin2dec[binStr] { return Array.from[binStr].reverse[].reduce[[total, currValue, index] => [ [currValue === '1'] ? total + [BigInt[2] ** BigInt[index]] : total ], BigInt[0]]; }3
Bây giờ, bạn chỉ cần nhân mỗi chữ số nhị phân với lũy thừa tương ứng của nó là
// ES10+ function bin2dec[binStr] { return Array.from[binStr].reverse[].reduce[[total, currValue, index] => [ [currValue === '1'] ? total + [BigInt[2] ** BigInt[index]] : total ], BigInt[0]]; }26 mà bạn đã liệt kê ở bước trước
// ES10+ function bin2dec[binStr] { return Array.from[binStr].reverse[].reduce[[total, currValue, index] => [ [currValue === '1'] ? total + [BigInt[2] ** BigInt[index]] : total ], BigInt[0]]; }5
Cuối cùng, bạn chỉ cần tính tổng tất cả các sản phẩm thu được từ bước cuối cùng
// ES10+ function bin2dec[binStr] { return Array.from[binStr].reverse[].reduce[[total, currValue, index] => [ [currValue === '1'] ? total + [BigInt[2] ** BigInt[index]] : total ], BigInt[0]]; }6
Điều này được gọi là phương pháp ký hiệu vị trí
Hy vọng bạn tìm thấy bài viết này hữu ích. Nó được xuất bản vào ngày 13 tháng 9 năm 2021. Hãy thể hiện tình yêu và sự ủng hộ của bạn bằng cách