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:
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).
Bài viết này được đóng góp bởi Pramod Kumar. Nếu bạn thích GeekSforGeeks và muốn đóng góp, bạn cũng có thể viết một bài viết bằng cách sử dụng PROPTENT.GeekSforGeeks.org hoặc gửi bài viết của bạn đến. Xem bài viết của bạn xuất hiện trên trang chính của GeekSforGeek và giúp các chuyên viên máy tính khác.
Vui lòng viết nhận xét nếu bạn tìm thấy bất cứ điều gì không chính xác, hoặc bạn muốn chia sẻ thêm thông tin về chủ đề được thảo luận ở trên.
Cải thiện bài viếtLưu bài viếtBài viết này được đóng góp bởi Pramod Kumar. Nếu bạn thích GeekSforGeeks và muốn đóng góp, bạn cũng có thể viết một bài viết bằng cách sử dụng PROPTENT.GeekSforGeeks.org hoặc gửi bài viết của bạn đến. Xem bài viết của bạn xuất hiện trên trang chính của GeekSforGeek và giúp các chuyên viên máy tính khác.
Vui lòng viết nhận xét nếu bạn tìm thấy bất cứ điều gì không chính xác, hoặc bạn muốn chia sẻ thêm thông tin về chủ đề được thảo luận ở trên.
Cải thiện bài viết
Examples:
Input : 55
Output : 55 in Binary : 0b110111
55 in Octal : 0o67
55 in Hexadecimal : 0x37
Input : 282
Output : 282 in Binary : 0b100011010
282 in Octal : 0o432
282 in Hexadecimal : 0x11a
Được đề xuất: Vui lòng thử cách tiếp cận của bạn trên {IDE} trước, trước khi chuyển sang giải pháp.{IDE} first, before moving on to the solution.
Một giải pháp là sử dụng phương pháp được thảo luận trong bài dưới đây.
Chuyển đổi từ bất kỳ cơ sở nào sang thập phân và ngược lại
Python cung cấp các chức năng trực tiếp cho các chuyển đổi cơ sở tiêu chuẩn như bin (), hex () và oct ()
def
decimal_to_binary(dec):
decimal
__ int
# @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
0
# @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
2# @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
3# @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
4# @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
5# @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
6# @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
7def
# @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
9
decimal
__ int
# @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
0
# @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
2# @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
3Input : 55
Output : 55 in Binary : 0b110111
55 in Octal : 0o67
55 in Hexadecimal : 0x37
Input : 282
Output : 282 in Binary : 0b100011010
282 in Octal : 0o432
282 in Hexadecimal : 0x11a
8# @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
532 in Binary : 0b100000
32 in Octal : 0o40
32 in Hexadecimal : 0x20
0# @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
7def
# @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
9
decimal
__ int
# @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
0
# @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
2# @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
3def
2# @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
5def
4# @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
7def
# @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
9def
32 in Binary : 0b100000
32 in Octal : 0o40
32 in Hexadecimal : 0x20
3decimal_to_binary(dec):
0
decimal_to_binary(dec):
1
Output:
32 in Binary : 0b100000
32 in Octal : 0o40
32 in Hexadecimal : 0x20
def
6=
def
8Pramod Kumar. If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to . See your article appearing on the GeeksforGeeks main page and help other Geeks.
def
9