Chuyển đổi nhị phân sang thập phân trong Python
Như hệ thống thập phân, hệ thống nhị phân cũng sử dụng notation vị trí. Tuy nhiên, mỗi con số hay bit trong một
số nhị phân có một giá trị vị trí cái là số lũy thừa của 2. Trong thảo luận cái đi theo, chúng ta thỉnh thoảng nhắc
đến một sô nhị phân như một chuỗi các bits hay một bit string. Bạn quyết định lượng số nguyên cái một string
các bits trình bày theo phong cách thường. Nhân giá trị của mỗi bit (0 hay 1) với giá trị vị trí của nó và cộng
các kết quả. Hãy làm cái đó cho số 11001112:
Không chỉ chúng ta đã quyết định giá trị số nguyên của số nhị phân này, mà chúng ta cũng còn chuyển đổi nó thành
thập phân trong quá trình! Trong tính toán giá trị của số nhị phân, chúng ta có thể bỏ qua các giá trị của các
vị trí chiếm bởi các 0s và đơn giản cộng các giá trị vị trí của các vị trí chiếm bởi các 1s.
Chúng ta có thể code một thuật toán cho chuyển đổi một số nhị phân thành sô thập phân tương ứng như một Python
script. Đầu vào cho script là một chuỗi các bít, và đầu ra của nó là số nguyên cái chuỗi trình bày. Thuật toán
sử dụng một loop cái tích lũy tổng một tập các số nguyên. Tổng ban đầu là 0. Số mũ cái tương ứng với vị trí của
bit cực trái của chuỗi là độ dài của chuỗi bit trừ 1. Loop ghé thăm các con số trong chuỗi từ cái đầu tiên đến
cái cuối cùng (trái sang phải) nhưng đếm từ số mũ lớn nhất của 2 xuống 0 khi nó đi. Mỗi con số được chuyển
đổi thành giá trị số nguyên của nó (1 hay 0), nhân với giá trị vị trí của nó, và kết quả được cộng tới tổng đi lên.
Một giá trị vị trí được tính toán bằng cách sử dụng toán tử **. Sau đây là code cho script, theo sau bởi một vài
phiên ví dụ trong shell:
“””
File: binarytodecimal.py
Converts a string of bits to a decimal integer.
“””
bitString = input(“Enter a string of bits: “)
decimal = 0
exponent = len(bitString) – 1
for digit in bitString:decimal = decimal + int(digit) * 2 ** exponent
exponent = exponent – 1print(“The integer value is”, decimal)
Enter a string of bits: 1111
The integer value is 15
Enter a string of bits: 101
The integer value is 5