python: Binary Number

 

def binary_to_decimal(binary_number):
    """

    :param binary_number:
    :return:
    """
    decimal = 0
    for i in range(len(binary_number)):
        if binary_number[i] == '1':
            decimal += 2 ** i
    return decimal
def one_complement(binary_number):
    """

    :param binary_number:
    :return:
    """
    decimal = binary_to_decimal(binary_number)
    return decimal + 1

def pagingNum(ptotal, verypnum):
    """
    打包裝的箱數計算
    :param ptotal: 總數量
    :param verypnum: 每個包裝打包的數量
    :return: 返回包裝數量
    """
    pagenumber=0
    for k in range(0,ptotal,verypnum):
        pagenumber+=1
    return  pagenumber


# Returns '0' for '1' and '1' for '0'
def flip(c):
    return '1' if (c == '0') else '0'


# Print 1's and 2's complement of
# binary number represented by "bin"
def printOneAndTwosComplement(bin):
    n = len(bin)
    ones = ""
    twos = ""

    # for ones complement flip every bit
    for i in range(n):
        ones += flip(bin[i])

        # for two's complement go from right
    # to left in ones complement and if
    # we get 1 make, we make them 0 and
    # keep going left when we get first
    # 0, make that 1 and go out of loop
    ones = list(ones.strip(""))
    twos = list(ones)
    for i in range(n - 1, -1, -1):

        if (ones[i] == '1'):
            twos[i] = '0'
        else:
            twos[i] = '1'
            break

    i -= 1
    # If No break : all are 1 as in 111 or 11111
    # in such case, add extra 1 at beginning
    if (i == -1):
        twos.insert(0, '1')

    print("1's complement: ", *ones, sep="")
    print("2's complement: ", *twos, sep="")

  

調用:

 binary_num = '101010'
    ones_complement = ''
    for bit in binary_num:
        ones_complement += '0' if bit == '1' else '1'
    print(ones_complement)

    binary_number = '101010'
    one_complement(binary_number)
    print(ones_complement)

    bin = "101010"
    printOneAndTwosComplement(bin.strip(""))



    pag=56
    co=pagingNum(pag,12)
    print(co)

  

    binary_num = '101010'
    ones_complement = ''
    for bit in binary_num:
        ones_complement += '0' if bit == '1' else '1'
    print(ones_complement)

    binary_number = '101010'
    one_complement(binary_number)
    print(ones_complement)

    bin = "101010"
    printOneAndTwosComplement(bin.strip(""))

    decimal = 0
    for i in range(len(binary_number)):
        if binary_number[i] == '1':
            decimal += 2 ** i
    print("0{0:b}".format((decimal)))
    decimal=decimal+1
    print("0{0:b}".format((decimal)))

    pag=56
    co=pagingNum(pag,12)
    print(co)

  

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章