Hướng dẫn base 10 to base 2 in python - cơ sở 10 đến cơ sở 2 trong python

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) <= 1):
        return num
    binaryValue = ''
    decimalRemainder = int(num)
    while decimalRemainder > 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

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ết
  • Lưu bài viết
  • 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ế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
    
    7

    def

    # @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
    
    3
    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
    
    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
    
    5
    32  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
    
    7

    def

    # @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
    
    3def2
    # @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
    
    5def4
    # @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
    
    7

    def

    # @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

    def

    32  in Binary :  0b100000
    32 in Octal :  0o40
    32  in Hexadecimal :  0x20
    
    3

    decimal_to_binary(dec):0

    decimal_to_binary(dec):1

    Output:

    32  in Binary :  0b100000
    32 in Octal :  0o40
    32  in Hexadecimal :  0x20
    

    def6= def8Pramod 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.

    def9