[5 min python] 內建函數 - bin()

更新 發佈閱讀 5 分鐘

Python「內建函數」(built-in functions)就是不用 import,隨時可以直接呼叫的函數,像 print()、len()、range() 這些,都算。

bin():把整數轉成二進位字串

bin() 接收一個整數,回傳它的二進位表示字串,前面會加上 '0b' 前綴。

語法:

bin(x)  # x 必須是整數

基本用法:

print(bin(0))     # 0b0
print(bin(1))     # 0b1
print(bin(10))    # 0b1010
print(bin(255))   # 0b11111111
print(bin(1024))  # 0b10000000000

回傳的是字串,不是數字。前綴 '0b' 表示這是二進位。

處理負數

bin() 可以處理負整數,會在前面加上負號:

print(bin(-1))    # -0b1
print(bin(-10))   # -0b1010
print(bin(-255))  # -0b11111111

Python 不會用補數表示法,而是直接在正數的二進位前面加負號。

去掉 0b 前綴

有時候只需要純二進位數字,不要前綴,有幾種做法:

num = 42

# 方法 1:字串切片
print(bin(num)[2:])        # '101010'

# 方法 2:用 format()
print(format(num, 'b'))    # '101010'

# 方法 3:用 f-string
print(f'{num:b}')          # '101010'

# 補零到固定位數
print(f'{num:08b}')        # '00101010'(補到 8 位)
print(format(num, '016b'))  # '0000000000101010'(補到 16 位)

bin() 搭配 int() 反向轉換

bin() 把整數變二進位字串,int() 可以把二進位字串變回整數:

# 整數 → 二進位字串
b = bin(42)         # '0b101010'
print(b)

# 二進位字串 → 整數
n = int('0b101010', 2)   # 42
print(n)

# 也可以不帶前綴
n2 = int('101010', 2)    # 42
print(n2)

bin() vs oct() vs hex()

Python 提供三個進位轉換函數,用法都一樣:

num = 255

print(bin(num))   # 0b11111111(二進位)
print(oct(num))   # 0o377(八進位)
print(hex(num))   # 0xff(十六進位)

# 都是回傳字串
print(type(bin(num)))  # <class 'str'>

小小綜合例子

來做一個數字的進位轉換器,把數字同時用各種進位顯示:

# 進位轉換器
def show_bases(num):
    print(f'十進位:{num}')
    print(f'二進位:{bin(num)}')
    print(f'八進位:{oct(num)}')
    print(f'十六進位:{hex(num)}')
    print(f'二進位(8位):{num:08b}')
    print(f'二進位(16位):{num:016b}')
    
    # 顯示每個 bit
    bits = f'{num:08b}'
    print(f'各位元:{" ".join(bits)}')
    print(f'位元值:', end='')
    for i, b in enumerate(bits):
        if b == '1':
            power = len(bits) - 1 - i
            print(f' 2^{power}={2**power}', end='')
    print()

show_bases(42)
# 輸出:
# 十進位:42
# 二進位:0b101010
# 八進位:0o52
# 十六進位:0x2a
# 二進位(8位):00101010
# 二進位(16位):0000000000101010
# 各位元:0 0 1 0 1 0 1 0
# 位元值: 2^5=32 2^3=8 2^1=2
留言
avatar-img
艾利斯幻想旅程
5會員
467內容數
網路世界是一個充滿多元性與無限可能的空間,人們可以在此分享資訊、交流思想,並展現無盡的創造力。然而,隨著社交媒體和線上論壇的普及,一種有趣且獨特的現象也隨之興起——廢文。廢文指的是那些內容看似無聊、無害,或表面上毫無意義的帖子、留言或圖片,通常目的在於娛樂或逗趣,而非提供實質價值的資訊。
艾利斯幻想旅程的其他內容
2026/02/21
Python「內建函數」(built-in functions)就是不用 import,隨時可以直接呼叫的函數,像 print()、len()、range() 這些,都算。 format():格式化單一值 format() 是內建函數,用來把一個值按照指定的格式轉成字串。注意這跟字串的 str.
2026/02/21
Python「內建函數」(built-in functions)就是不用 import,隨時可以直接呼叫的函數,像 print()、len()、range() 這些,都算。 format():格式化單一值 format() 是內建函數,用來把一個值按照指定的格式轉成字串。注意這跟字串的 str.
2026/02/21
Python「內建函數」(built-in functions)就是不用 import,隨時可以直接呼叫的函數,像 print()、len()、range() 這些,都算。 ascii():回傳物件的 ASCII 表示字串 ascii() 跟 repr() 很像,都會回傳物件的字串表示。差別在於
2026/02/21
Python「內建函數」(built-in functions)就是不用 import,隨時可以直接呼叫的函數,像 print()、len()、range() 這些,都算。 ascii():回傳物件的 ASCII 表示字串 ascii() 跟 repr() 很像,都會回傳物件的字串表示。差別在於
2026/02/21
Python「內建函數」(built-in functions)就是不用 import,隨時可以直接呼叫的函數,像 print()、len()、range() 這些,都算。 ord():把字元變成對應的數字 ord() 接收一個字元(長度為 1 的字串),回傳它的 Unicode 碼位(整數)。
2026/02/21
Python「內建函數」(built-in functions)就是不用 import,隨時可以直接呼叫的函數,像 print()、len()、range() 這些,都算。 ord():把字元變成對應的數字 ord() 接收一個字元(長度為 1 的字串),回傳它的 Unicode 碼位(整數)。
看更多