欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python中不同進(jìn)制間的轉(zhuǎn)換實現(xiàn)

 更新時間:2023年10月23日 09:00:08   作者:宏陽李老師  
在計算機(jī)科學(xué)中,需要進(jìn)行不同進(jìn)制之間的轉(zhuǎn)換,本文主要介紹了Python中不同進(jìn)制間的轉(zhuǎn)換,具有一定的參考價值,感興趣的可以了解一下

一、不同進(jìn)制在計算機(jī)科學(xué)、數(shù)學(xué)和其他領(lǐng)域中具廣泛的應(yīng)用

以下是一些常見的應(yīng)用:
1. 二進(jìn)制(base-2): 在計算機(jī)系統(tǒng)中,數(shù)據(jù)以二進(jìn)制形式存儲和處理。二進(jìn)制由0和1組成,是數(shù)字電子技術(shù)的基礎(chǔ)。
2. 十進(jìn)制(base-10): 十進(jìn)制是我們平常使用的數(shù)字系統(tǒng),它由0到9這些數(shù)字組成。十進(jìn)制在日常生活中用于計算和表示數(shù)量。
3. 八進(jìn)制(base-8) 八進(jìn)制使用0到7這幾個數(shù)字表示數(shù)值。它在計算機(jī)編程中經(jīng)常用于表達(dá)特殊位模式、字節(jié)權(quán)限和文件權(quán)限等。
4.十六進(jìn)制(base-16): 十六進(jìn)制使用0到9的數(shù)字和A到F的六個字母表示數(shù)值。它在計算機(jī)科學(xué)中被廣泛用于表達(dá)內(nèi)存地址、顏色代碼和二進(jìn)制數(shù)據(jù)的可讀形式。

進(jìn)制轉(zhuǎn)換: 在計算機(jī)科學(xué)中,需要進(jìn)行不同進(jìn)制之間的轉(zhuǎn)換。例如,將十進(jìn)制數(shù)轉(zhuǎn)換為二進(jìn)制或十六進(jìn)制,或者將二進(jìn)制數(shù)轉(zhuǎn)換為十進(jìn)制。

除了上述應(yīng)用外,進(jìn)制還在信息理論、密碼學(xué)、邏輯電路設(shè)計和圖形處理等領(lǐng)域中發(fā)揮著重要作用。進(jìn)制概念的靈活運(yùn)用可以增強(qiáng)數(shù)據(jù)表示和處理的效率,以及解決特定問題所需的編程技巧。

二、在Python中,可以使用以下函數(shù)進(jìn)行不同進(jìn)制之間的轉(zhuǎn)換

1.bin(): 將整數(shù)轉(zhuǎn)換為二進(jìn)制字符串。

print(bin(10))  # 輸出: '0b1010'

2.oct(): 將整數(shù)轉(zhuǎn)換為八進(jìn)制字符串。

print(oct(10))  # 輸出: '0o12' 

3.hex(): 將整數(shù)轉(zhuǎn)換為十六進(jìn)制字符串。

print(hex(10))  # 輸出: '0xa'

4.int(): 將字符串按指定進(jìn)制轉(zhuǎn)換為整數(shù)。

print(int(1010,2))  # 輸出: 10
print(int(1010,8))  # 輸出: 10
print(int('a',16))  # 輸出: 10

這些函數(shù)可用于在不同進(jìn)制之間轉(zhuǎn)換數(shù)字。bin()、oct()和 hex()函數(shù)將整數(shù)轉(zhuǎn)換為相應(yīng)進(jìn)制的字符串,而 int()函數(shù)將指定進(jìn)制字符串轉(zhuǎn)換為整數(shù)。

三、在Python直接使用函數(shù)進(jìn)行進(jìn)制轉(zhuǎn)換非常方便快捷

但對于初學(xué)者來說,還是要認(rèn)真學(xué)習(xí)進(jìn)制轉(zhuǎn)換的底層運(yùn)算原理。

將十進(jìn)制數(shù)轉(zhuǎn)換為任意進(jìn)制(base)的原理是取余操作。首先,我們從給定的十進(jìn)制數(shù)開始。然后,通過連續(xù)地進(jìn)行“整除并記錄余數(shù)”的操作,獲得在指定進(jìn)制下各個位上的數(shù)字或字符。這個過程持續(xù)到十進(jìn)制數(shù)變?yōu)?為止。

具體操作步驟如下:
1. 將給定的十進(jìn)制數(shù)除以指定的進(jìn)制(base),并記錄所得的商和余數(shù)。
2. 將余數(shù)對應(yīng)的數(shù)字(如果是大于9的數(shù)字,則對應(yīng)于字母)作為 base 進(jìn)制數(shù)的最低位值。
3. 將商繼續(xù)除以指定進(jìn)制,并將該步驟中得到的余數(shù)添加到首位。重復(fù)此步驟直到商變?yōu)榱恪?br />4. 得到的結(jié)果就是將十進(jìn)制數(shù)轉(zhuǎn)換為 base 進(jìn)制的表達(dá)形式。

例如,將十進(jìn)制數(shù) 10 轉(zhuǎn)換為二進(jìn)制(base=2),我們可以執(zhí)行以下步驟:

10 ÷ 2 = 5 余 0    0
5 ÷ 2 = 2 余 1      10
2 ÷ 2 = 1 余 0      010
1 ÷ 2 = 0 余 1      1010

從最后一步開始,我們依次讀取每個余數(shù),結(jié)果就是二進(jìn)制數(shù) 1010。因此,10二進(jìn)制表示為 1010。

同樣的原理適于將十進(jìn)制數(shù)轉(zhuǎn)換為任意指定的 base 進(jìn)制。根據(jù)不同的進(jìn)制,可使用不同的數(shù)字或字符表示位值。這種整除和取余的方法使我們能夠在將任意十進(jìn)制數(shù)轉(zhuǎn)換為各種進(jìn)制時進(jìn)行有效的計算和轉(zhuǎn)換。

以下是使用循環(huán)手動實現(xiàn)進(jìn)制轉(zhuǎn)換的示例代碼:

# 將10進(jìn)制數(shù)decimal轉(zhuǎn)換為base進(jìn)制的函數(shù)
def decimal_to_base(decimal, base):
    if not isinstance(decimal, int) or not isinstance(base, int) or base < 2:
        raise ValueError("Invalid inputs")  # 檢查輸入是否有效,如果無效則引發(fā)異常
    digits = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"  # 存儲各個位上的數(shù)字或字母
    if decimal == 0:
        return '0'  # 如果十進(jìn)制數(shù)為0,則直接返回字符串'0'
    result = ''
    negative = False
    if decimal < 0:
        negative = True
        decimal = abs(decimal)  # 處理負(fù)數(shù)情況,轉(zhuǎn)換為正數(shù)進(jìn)行計算
    while decimal > 0:
        remainder = decimal % base  # 取余數(shù)
        result = digits[remainder] + result  # 將余數(shù)對應(yīng)的字符拼接到結(jié)果字符串的左側(cè)(考慮進(jìn)制轉(zhuǎn)換后順序倒過來)
        decimal = decimal // base  # 整除以進(jìn)行下一位的計算
    if negative:
        result = '-' + result  # 如果原始數(shù)是負(fù)數(shù),則在結(jié)果字符串前添加負(fù)號
    return result  # 返回轉(zhuǎn)換后的結(jié)果字符串

# 調(diào)用函數(shù)進(jìn)行測試
print(decimal_to_base(10597059, 16)) #輸出結(jié)果:A1B2C3
print(decimal_to_base(10597059, 8)   #輸出結(jié)果:50331303
print(decimal_to_base(10597059, 2))  #輸出結(jié)果:101000011011001011000011

以上函數(shù)可以將一個十進(jìn)制數(shù)轉(zhuǎn)換為任意指定進(jìn)制的字符串表示形式。只需傳遞要轉(zhuǎn)換的十進(jìn)制數(shù)和目標(biāo)進(jìn)制作為參數(shù)即可。

將任意進(jìn)制(base)數(shù)轉(zhuǎn)換為十進(jìn)制的原理是加權(quán)求和。從給定的 base 進(jìn)制數(shù)的最低位開始,將每個位的值乘以對應(yīng)的權(quán)重,并對所有位的結(jié)果進(jìn)行累加。權(quán)重由 base 的冪決定,從右到左逐漸遞增。
具體的步驟如下:
1. 從給定的 base 進(jìn)制數(shù)的最低位開始,將每個位的值與重相乘。
2. 對所有位的乘積求和,得到最終的十進(jìn)制表示。

例如,將二進(jìn)制數(shù) 1010 轉(zhuǎn)換為十進(jìn)制,可以執(zhí)行以下步驟:
(1 * 2^3) + (0 * 2^2) + (1 * 2^1) + (0 * 2^0)
= 8 + 0 + 2 + 0
= 10

因此,二進(jìn)制數(shù) 1010 在十進(jìn)制表示為 10。

同樣的原理適用于將任意指定的 base 進(jìn)制數(shù)轉(zhuǎn)換為十進(jìn)制。根據(jù)每個位上的值和對應(yīng)的權(quán)重,可以通過加權(quán)求和的方法有效地計算和轉(zhuǎn)換為十進(jìn)制。這種加權(quán)求和的方法使我們能夠在將各種進(jìn)制轉(zhuǎn)換為十進(jìn)制時進(jìn)行有效的計算和轉(zhuǎn)換。

以下是使用循環(huán)手動實現(xiàn)將任意進(jìn)制轉(zhuǎn)換為10進(jìn)制的代碼:

# 將base進(jìn)制數(shù)number轉(zhuǎn)換為10進(jìn)制的函數(shù)
def base_to_decimal(number, base):
    if not isinstance(number, str) or not isinstance(base, int) or base < 2:
        raise ValueError("Invalid inputs")  # 檢查輸入是否有效,如果無效則引發(fā)異常
    digits = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"  # 存各個位上的數(shù)字或字母
    number = number.upper()  # 將輸入的字符串轉(zhuǎn)換為大寫,以便與 digits 字符串中的字符進(jìn)行匹配
    decimal = 0  # 初始化十進(jìn)制數(shù)為0
    power = 0 # 初始化權(quán)重(指數(shù))為0
    for digit in reversed(number):  # 對于從右到左的每個數(shù)字字符
        if digit not in digits or digits.index(digit) >= base:
            raise ValueError("Invalid input")  # 如果字符不在 digits 中或其索引超過等于指定 base 的范圍,則引發(fā)異常
        decimal += digits.index(digit) * (base ** power)  # 將該位上的值乘以權(quán)重,并將其累加到當(dāng)前的十進(jìn)制數(shù)中
        power += 1  # 增加權(quán)重(指數(shù))
    return decimal  # 返回轉(zhuǎn)換后的十進(jìn)制數(shù)
# 調(diào)用函數(shù)進(jìn)行測試
print(base_to_decimal("A1B2C3", 16)) #輸出結(jié)果:10597059
print(base_to_decimal("50331303", 8))   #輸出結(jié)果:10597059
print(base_to_decimal("101000011011001011000011", 2))  #輸出結(jié)果:10597059

以上函數(shù)可以將任意進(jìn)制的數(shù)字字符串轉(zhuǎn)換為十進(jìn)制。只需傳遞要轉(zhuǎn)換的數(shù)字和當(dāng)前進(jìn)制作為參數(shù)即可。

到此這篇關(guān)于Python中不同進(jìn)制間的轉(zhuǎn)換實現(xiàn)的文章就介紹到這了,更多相關(guān)Python 不同進(jìn)制間的轉(zhuǎn)換內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • python單例模式之selenium driver實現(xiàn)單例

    python單例模式之selenium driver實現(xiàn)單例

    這篇文章主要介紹了python單例模式之selenium driver實現(xiàn)單例,使用裝飾器實現(xiàn)單例,文章基于python的相關(guān)資料實現(xiàn)主題,具有一的的參考價值,需要的朋友可以參考一下
    2022-03-03
  • python利用itertools生成密碼字典并多線程撞庫破解rar密碼

    python利用itertools生成密碼字典并多線程撞庫破解rar密碼

    這篇文章主要介紹了python利用itertools生成密碼字典并多線程撞庫破解rar密碼,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-08-08
  • Python用list或dict字段模式讀取文件的方法

    Python用list或dict字段模式讀取文件的方法

    這篇文章主要給大家介紹了Python利用list字段模式或者dict字段模式讀取文件的方法,文中給出了詳細(xì)的介紹和示例代碼,相信對大家的理解和學(xué)習(xí)具有一定的參考借鑒價值,有需要的朋友可以跟著小編來一起學(xué)習(xí)學(xué)習(xí)吧。
    2017-01-01
  • 如何利用pandas將Excel轉(zhuǎn)為html格式

    如何利用pandas將Excel轉(zhuǎn)為html格式

    工作中經(jīng)常會遇到Excel轉(zhuǎn)為html格式這種需求,下面這篇文章主要給大家介紹了關(guān)于如何利用pandas將Excel轉(zhuǎn)為html格式的相關(guān)資料,主要利用的是pd.to_html,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2021-08-08
  • python中pandas對多列進(jìn)行分組統(tǒng)計的實現(xiàn)

    python中pandas對多列進(jìn)行分組統(tǒng)計的實現(xiàn)

    分組統(tǒng)計在很多時候都需要用到,可以實現(xiàn)很多數(shù)據(jù)庫函數(shù)的功能。本文主要介紹了python中pandas對多列進(jìn)行分組統(tǒng)計的實現(xiàn),感興趣的可以了解一下
    2021-06-06
  • Python實現(xiàn)在PDF插入頁眉頁腳

    Python實現(xiàn)在PDF插入頁眉頁腳

    在處理篇幅較長、結(jié)構(gòu)復(fù)雜的PDF文檔時,頁眉和頁腳的設(shè)計與插入就顯得尤為重要,本文主要介紹了如何使用Python代碼操作PDF文檔,在PDF文檔中插入自定義的頁眉和頁腳,有需要的可以參考下
    2024-04-04
  • Python處理Excel文件遇到的常見問題解析與解決

    Python處理Excel文件遇到的常見問題解析與解決

    Python 的 pandas 庫提供了便捷的 read_excel() 方法,但在實際使用中,我們可能會遇到各種問題,本文將分析這些常見錯誤,并提供 Python 和 Java 的解決方案,有需要的可以參考下
    2025-04-04
  • Python 中對 XML 文件的編碼轉(zhuǎn)換問題

    Python 中對 XML 文件的編碼轉(zhuǎn)換問題

    這篇文章主要介紹了Python 中對 XML 文件的編碼轉(zhuǎn)換問題,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-03-03
  • python實現(xiàn)對列表中的元素進(jìn)行倒序打印

    python實現(xiàn)對列表中的元素進(jìn)行倒序打印

    今天小編就為大家分享一篇python實現(xiàn)對列表中的元素進(jìn)行倒序打印,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-11-11
  • pygame實現(xiàn)井字棋之第二步邏輯實現(xiàn)

    pygame實現(xiàn)井字棋之第二步邏輯實現(xiàn)

    這篇文章主要介紹了pygame實現(xiàn)井字棋之第二步邏輯實現(xiàn),文中有非常詳細(xì)的代碼示例,對正在學(xué)習(xí)python的小伙伴們有非常好的幫助,需要的朋友可以參考下
    2021-05-05

最新評論