Tôi đang làm việc trên một bộ chuyển đổi số trong Python và tôi cảm thấy khó khăn trong việc chuyển đổi chính xác các giá trị thập phân lớn [lớn hơn 2^53] từ thập phân sang nhị phân. Tôi đã thực hiện nhiều bài kiểm tra ngẫu nhiên để tìm điểm phá vỡ nhưng tôi không chắc tại sao nó lại bị phá vỡ. Tôi nghĩ Python 3 cho phép số lượng lớn tùy ý. Tôi có thể mất một số dữ liệu chuyển đổi giữa các giá trị STR và INT. Cảm ơn sự giúp đỡ của bạn. Đây là mã tôi đang sử dụng:
# @param: num is an integer >= 0
# @return: A string containing the converted binary value of num
def base10to2[num]:
if[not bool[re.match[decimals, str[num]]]]:
return "num must be a decimal number string [0-9]."
if[int[num] 0:
binaryValue = str[decimalRemainder % 2] + binaryValue
decimalRemainder = math.floor[decimalRemainder / 2]
return binaryValue
Dưới đây là một số kết quả kiểm tra ngẫu nhiên của tôi:
Lỗi Bin Dec theo giá trị thập phân 57578088768095921 và giá trị nhị phân 110011001000111011110111011101111101111001101101100.
Lỗi Bin Dec theo giá trị thập phân 94158773465990610 và giá trị nhị phân 1010011101000010011100111110101001110110110100010110100.
Lỗi Bin Dec theo giá trị thập phân 27741136442133437 và giá trị nhị phân 11000101000111001101010100111010011001000101110111100.
Lỗi Bin Dec theo giá trị thập phân 102400897160966081 và giá trị nhị phân 10110101111001101000100101100101111110111101111110000.
Lỗi Bin Dec theo giá trị thập phân 61449679276206615 và giá trị nhị phân 11011010010100001010011001100000110110110110100100.
Lỗi Bin Dec theo giá trị thập phân 32630026885393859 và giá trị nhị phân 11100111110110011011000101001100000111110110111000100.
Lỗi Bin Dec theo giá trị thập phân 28823706477206651 và giá trị nhị phân 110011001100111000000100010000110101011110001111100.
Lỗi Bin Dec theo giá trị thập phân 32300284354028835 và giá trị nhị phân 11100101100000011101111111111110001001001110010100100100.
Lỗi Bin Dec theo giá trị thập phân 15026178163056103 và giá trị nhị phân 1101010110001000111010111011101111011001110111101001.
Dường như chỉ có 4 bit cuối cùng không chính xác trong những trường hợp này.
Dưới đây là quy trình chuyển đổi từ cơ sở 2 sang cơ sở 10 tôi có [chỉ trong trường hợp điều này có liên quan].
# @param: num is binary whole number
# @return: A string containing the converted decimal value of num
def base2to10[num]:
if[not bool[re.match[binary, str[num]]]]:
return "num must be a binary number string [0-1]."
digits = []
placeValue = 1
decimalValue = 0
digits = list[num]
for i in range[len[digits]]:
decimalValue += placeValue * int[digits[len[digits] - i - 1]]
placeValue *= 2
return decimalValue
Cơ sở mười chữ số, từ 0 đến 9, được sử dụng trong hệ thống đếm nhị phân thập phân hoặc "denary". Nó là hệ thống đánh số được sử dụng rộng rãi nhất. Mỗi chữ số trong hệ thống này có một vị trí và một dấu thập phân. Mặt khác, hệ thống nhị phân sử dụng các số nguyên ở cơ sở hai, từ 0 đến 1. Đây là hệ thống đơn giản nhất vì nó có hai chữ số: 0 và 1. Do đó, thông thường các chuyên gia về lập trình máy tính hoặc khác Các trường kỹ thuật liên quan cần chuyển đổi mã thập phân sang nhị phân. Trong bài viết này, chúng tôi sẽ học cách chuyển đổi thập phân thành nhị phân trong Python, sử dụng các hàm Python tích hợp và không có nó.Decimal to Binary in Python, using built-in python functions and without it. Nhị phân là một trong những khía cạnh nền tảng quan trọng nhất của máy tính và các hệ thống kỹ thuật số khác. Khi con người chúng ta sử dụng các ngôn ngữ để hiểu và giao tiếp với nhau, máy tính và các hệ thống kỹ thuật số khác sử dụng nhị phân. Đây là một hệ thống số cơ sở-2 chỉ có hai số, 0 & 1, tương ứng với trạng thái BẬT & TẮT mà máy tính của bạn có thể hiểu.0 & 1, corresponding to ON & OFF states that your computer can understand. Vì con người bình thường có mười ngón tay để đại diện cho một hệ thống số đơn giản gọi là thập phân, các máy tính có các trạng thái bật và tắt này đại diện cho nhị phân. Vì vậy, để hiểu và giải thích nhị phân, chúng ta cần một số kỹ thuật để chuyển đổi mã nhị phân thành mã thập phân [có thể đọc được] và ngược lại. Do đó, bài viết này sẽ thảo luận về cách chuyển đổi thập phân thành nhị phân và ngược lại, trong bối cảnh với một trong các ngôn ngữ lập trình máy tính, Python.Tổng quan
Phạm vi
Giới thiệu
Hiểu số thập phân và nhị phân
Hệ thống thập phân [cơ sở-10] sử dụng mười số từ 0 đến 9 và sau đó sử dụng các kết hợp của chúng để tạo thành chữ số, với mỗi chữ số có giá trị gấp mười lần so với chữ số cuối cùng [1, 10, 100, so] qua phải.
Hãy xem xét một giá trị 265:
- Ở đây, 265 là sự kết hợp của các số từ 0 đến 9 để tạo thành mỗi chữ số
- Mỗi chữ số gấp mười lần so với chữ số cuối cùng từ trái sang phải 5 -> 5 × 100; 6 -> 6 × 101; 2 -> 2 × 1025 -> 5×100; 6 -> 6×101; 2 -> 2×102
Hệ thống nhị phân [cơ sở-2] cũng tương tự nhau. Đó là sự kết hợp của các số 0 hoặc 1, với mỗi chữ số trị giá gấp hai lần so với chữ số cuối cùng [1, 2, 4, so-on] đi từ trái sang phải.
Đại diện chữ số thập phân:
… | 10410^4 | 10310^3 | 10210^2 | 10110^1 | 10010^0 |
Nthn^{th} chữ số digit | 5th5^{th} chữ số digit | 4th4^{th} chữ số digit | 3rd3^{rd} chữ số digit | 2nd2^{nd} chữ số digit | 1st1^{st} chữ số digit |
Đại diện chữ số nhị phân:
… | 242^4 | 232^3 | 222^2 | 212^1 | 202^0 |
Nthn^{th} chữ số digit | 5th5^{th} chữ số digit | 4th4^{th} chữ số digit | 3rd3^{rd} chữ số digit | 2nd2^{nd} chữ số digit | 1st1^{st} chữ số digit |
Đại diện chữ số nhị phân:
[0 hoặc 1]
Chuyển đổi nhị phân sang thập phân trong Python01011
Xem xét số nhị phân 01011 | Chữ số=16 | Trọng lượng=8 | 242^4 = 16=4 | 232^3 = 8=2 | 222^2 = 4=1 |
Hence,
212^1 = 2
202^0 = 1[01011]2[01011]_2 is equivalent to [11]1 0[11]_{10} Decimal[base-10] number.
[01011] 2 = [0 × 24]+[1 × 23]+[0 × 22]+[1 × 21]+[1 × 20] = [0]+[8]+[0]+[2] + [1] = [11] 10 [01011]^2 = [0 × 2^4] + [1 × 2^3] + [0 × 2^2] + [1 × 2^1] + [1 × 2^0] = [0]+[8]+[0]+[2]+[1] = [11] _ {10}
Do đó, nhị phân [cơ sở-2] [01011] 2 [01011] _2 tương đương với [11] 1 0 [11] _ {10} số thập phân [cơ sở-10].
Chuyển đổi nhị phân thành thập phân trong Python
Chúng ta sẽ thấy cách chuyển đổi nhị phân thành thập phân trong Python bằng cách sử dụng hàm tích hợp.int[] function to convert a binary to its decimal value. The int[] function takes 2 arguments, a value and the base of the number to be converted, which is 2 in the case of binary numbers
Syntax:
Code:
# Function Binary to Decimal number def binaryToDecimal[val]: return int[val, 2] # Driver code if __name__ == '__main__': print[binaryToDecimal['100']] print[binaryToDecimal['101']] print[binaryToDecimal['1001']]
Output:
Thập phân sang chuyển đổi nhị phân trong Python
Hãy để cố gắng hiểu số thập phân để chuyển đổi nhị phân. Kỹ thuật dễ nhất để chuyển đổi số thập phân thành tương đương nhị phân của chúng là phân chia cho 2.Division by 2.
Trong phân chia cho kỹ thuật 2, chúng tôi liên tục chia số thập phân cho 2 và lưu ý lời nhắc cho đến khi chúng tôi nhận được 1 là giá trị đầu vào của chúng tôi. Sau đó, chúng tôi đọc các lời nhắc được ghi nhận theo thứ tự ngược lại để có được giá trị nhị phân cuối cùng.
Hãy để phá vỡ các tuyên bố trước đó để có được sự rõ ràng hơn. Giả sử chúng ta có một hàm đặc biệt chia số đầu vào cho 2 và cung cấp phần còn lại làm đầu ra. Đối với thập phân đến nhị phân, chúng tôi gọi hàm đặc biệt này nhiều lần cho đến khi chúng tôi nhận được 1 là giá trị đầu vào. Sau đó, cuối cùng chúng tôi đã in tất cả các lời nhắc đã lưu để có được giá trị nhị phân cuối cùng [cơ sở-2].binary[base-2] value.
Chuyển đổi thập phân thành nhị phân trong Python
Bây giờ chúng ta sẽ xem cách mã hóa thập phân cho nhị phân trong Python. Trước tiên chúng tôi sẽ cố gắng mã hóa kỹ thuật mà chúng tôi đã học bằng cách sử dụng một cuộc gọi chức năng đệ quy tùy chỉnh trong Python.
1. Hàm đệ quy tùy chỉnh trong Python để chuyển đổi thập phân thành nhị phân:
Trong mẫu này, chúng tôi sẽ viết hàm đặc biệt [decimaltobinary] để thực hiện để có được các chỉ số [đầu vào vào gọi hàm tiếp theo] và phần còn lại [giá trị đầu ra], và sau đó chúng tôi sẽ gọi nó nhiều lần cho đến khi giá trị đầu vào lớn hơn và bằng 1
Code:
#Recursive Function to convert Decimal to Binary def decimalToBinary[ip_val]: if ip_val >= 1: # recursive function call decimalToBinary[ip_val // 2] # printing remainder from each function call print[ip_val % 2, end = ''] # Driver Code if __name__ == '__main__': # decimal value ip_val = 24 # Calling special function decimalToBinary[ip_val]
Output:
Ngoài ra, Python cũng cung cấp một chức năng tích hợp để chuyển đổi thập phân thành nhị phân.
2. Chức năng tích hợp trong Python để chuyển đổi nhị phân thành thập phân:
Trong Python, chúng ta chỉ có thể sử dụng hàm bin [] để chuyển đổi từ giá trị thập phân sang giá trị nhị phân tương ứng của nó. Bin [] lấy một giá trị làm đối số của nó và trả về một nhị phân tương đương.bin[] function to convert from a decimal value to its corresponding binary value. The bin[] takes a value as its argument and returns a binary equivalent.
Lưu ý: Bin [] Trả về giá trị nhị phân với tiền tố 0b, do đó tùy thuộc vào trường hợp sử dụng, định dạng nên được thực hiện để loại bỏ 0b. bin[] return binary value with the prefix 0b, so depending on the use-case, formatting should be done to remove 0b.
Code:
# Function to convert decimal to binary # using built-in python function def decimalToBinary[n]: # converting decimal to binary # and removing the prefix[0b] return bin[n].replace["0b", ""] # Driver code if __name__ == '__main__': # calling function # with decimal argument print[decimalToBinary[77]]
Output:
Chúng ta cũng có thể chuyển đổi thập phân thành nhị phân theo một cách khác ngoài việc sử dụng chức năng tích hợp từ Python.
3. Không sử dụng chức năng tích hợp trong Python để chuyển đổi nhị phân thành thập phân:
Code:
# Function to convert Decimal to Binary def decimalToBinary[n]: return "{0:b}".format[int[n]] # Driver code if __name__ == '__main__': print[decimalToBinary[77]]
Output:
Sự kết luận
- Hầu hết các máy tính và hệ thống kỹ thuật số sử dụng nhị phân vì lưu trữ dữ liệu đáng tin cậy của chúng.
- Hệ thống thập phân [cơ sở-10] sử dụng kết hợp các số từ 0 đến 9 để tạo thành các chữ số, với mỗi chữ số có giá trị gấp mười lần so với chữ số cuối cùng.
- Hệ thống nhị phân [cơ sở-2] sử dụng kết hợp 0 hoặc 1 để tạo thành các chữ số, với mỗi chữ số có giá trị gấp hai lần so với chữ số cuối cùng.
- Chuyển đổi nhị phân sang thập phân là tổng trọng số của mỗi chữ số [2i x ith-giá trị].sum [2i x ith-value].
- Có thể thực hiện nhị phân đến thập phân trong Python bằng cách sử dụng hàm tích hợp int [,]int[, ]
- Chuyển đổi thập phân sang nhị phân đạt được bằng cách sử dụng phân chia theo kỹ thuật 2.Division By 2 technique.
Một số cách để chuyển đổi thập phân thành nhị phân trong python bằng cách sử dụng hàm đệ quy tùy chỉnh, functionbin [] tích hợp [] hoặc sử dụng định dạng {0: b}. [Int []].functionbin[] or using “{0:b}”.format[int[]].
Đọc thêm:
1- Cách chuyển đổi int thành chuỗi trong python