python學習day2:進制+碼制+邏輯運算符

進制

Python 中的進制表示與轉換

進制的基本概念

  • 二進制、八進制、十進制、十六進制的定義與特點
  • 不同進制在計算機科學中的應用場景

Python 中的進制表示

  • 二進制表示:使用 0b 前綴
  • 八進制表示:使用 0o 前綴
  • 十六進制表示:使用 0x 前綴
  • 示例代碼:
binary_num = 0b1010
octal_num = 0o12
hex_num = 0xA
Python 中的進制轉換
  • 十進制轉其他進制:使用 bin()oct()hex() 函數
  • 其他進制轉十進制:使用 int() 函數
  • 示例代碼:
decimal_num = 10
print(bin(decimal_num))  # 輸出: 0b1010
print(oct(decimal_num))  # 輸出: 0o12
print(hex(decimal_num))  # 輸出: 0xAbinary_num = '1010'
print(int(binary_num, 2))  # 輸出: 10

進制轉換的常見應用

  • 數據存儲與傳輸中的進制轉換
  • 網絡編程中的 IP 地址與端口號的進制表示
  • 加密算法中的進制轉換

進制轉換的注意事項

  • 不同進制之間的轉換精度問題
  • 進制轉換中的溢出與截斷問題
  • 示例代碼:
large_num = 0xFFFFFFFF
print(int(large_num))  # 輸出: 4294967295

進制轉換的進階技巧

  • 使用 format() 函數進行進制格式化輸出
  • 自定義進制轉換函數
  • 示例代碼:
num = 255
print(format(num, 'b'))  # 輸出: 11111111
print(format(num, 'o'))  # 輸出: 377
print(format(num, 'x'))  # 輸出: ff

2進制口訣:8421口訣

8421口訣是一種用于快速記憶二進制與十進制之間轉換的方法。它基于二進制的位權值,即每一位的權重分別是8、4、2、1。通過這個口訣,可以快速將二進制數轉換為十進制數,或者將十進制數轉換為二進制數。

8421口訣的使用方法

將二進制數的每一位與對應的位權值相乘,然后將結果相加,即可得到對應的十進制數。例如,二進制數1011可以按照以下方式轉換為十進制:

1 * 8 = 8
0 * 4 = 0
1 * 2 = 2
1 * 1 = 1

將結果相加:8 + 0 + 2 + 1 = 11,因此二進制數1011對應的十進制數是11

示例

  • 二進制數1101轉換為十進制:

    1 * 8 = 8
    1 * 4 = 4
    0 * 2 = 0
    1 * 1 = 1
    

    結果:8 + 4 + 0 + 1 = 13

  • 二進制數1001轉換為十進制:

    1 * 8 = 8
    0 * 4 = 0
    0 * 2 = 0
    1 * 1 = 1
    

    結果:8 + 0 + 0 + 1 = 9

反向轉換

8421口訣也可以用于將十進制數轉換為二進制數。通過將十進制數分解為8、4、2、1的組合,可以快速得到對應的二進制數。例如,十進制數10可以分解為8 + 2,因此對應的二進制數為1010

?

需要哪一個相加,才能獲得要轉換的十進制的數,則在下方填1,若不需要則填0?

示例

  • 十進制數7轉換為二進制:

    7 = 4 + 2 + 1
    

    對應的二進制數為0111

  • 十進制數12轉換為二進制:

    12 = 8 + 4
    

    對應的二進制數為1100

通過8421口訣,可以快速進行二進制與十進制之間的轉換,特別適用于初學者或需要快速計算的場景。

進制轉換的實踐案例

  • 實現一個簡單的進制轉換工具
  • 處理大整數的進制轉換問題
  • 示例代碼:
def convert_base(num, base):digits = "0123456789ABCDEF"if num < base:return digits[num]else:return convert_base(num // base, base) + digits[num % base]print(convert_base(255, 16))  # 輸出: FF

多進制轉十進制(計算方法)

二轉十

例如:2進制下的1010轉為十進制

0b1010=1*(2**3)+0*(2**2)+1*(2**1)+0*(2**0)
-->8+0+2+0
-->8+2
-->10

?八轉十

例如:8進制下的0o12轉為十進制

0o12=1*(8**1)+2*(8**0)
-->8+2
-->10

十六轉十?

例如:0x11轉為十進制

0x11=1*(16**1)+1*(16**0)
-->16+1
-->17

?多進制轉2進制轉16進制

一般計算16進制,我們先轉為2進制,再轉為16進制。

0o664通過421
-->0b110 110 100
-->0b1 1011 0100
0b1 1011 0100轉16進制
1011通過8421口訣
0b1-->0x1
-->1011-->8+4+1-->11-->0xb
0100通過8421
-->4
-->0x1b4

碼制(詳細可看C語言D5)

原碼:

有符號整數的二進制編碼方式,其中最高位表示符號位,0表示正數,1表示負數。其余位表示數值的絕對值。例如,+10的原碼為0000 1010,-10的原碼為1000 1010。

通常由原碼轉反碼,由反碼轉補碼,當補碼再補碼=原碼

補充:

為什么都是8位:

計算機中存儲的數據單位=1字節=8位

反碼:

反碼特點:

????????正數情況下與原碼的值不變

? ? ? ??負數情況下,符號位不變,但其他部分取反(0變1,1變0)

補碼:

在計算機系統中,數值一律用補碼來存儲

補碼特點:

? ? ? ? 對于正數來說,原碼、反碼、補碼皆相同

? ? ? ? 對于負數來說,其補碼=它的反碼加1

? ? ? ? 補碼符號位不動,其他位求反,最后整個 數+1,得到補碼

總結:

由-1來計算

原碼

0b1000 0001

反碼

0b1111 1110

補碼

0b1111 1111

邏輯運算符

邏輯

  • 與邏輯==&
  • 或邏輯==|
  • 非邏輯==~

運算符

+,-,*,/,//向下取整數,%取模,**冪

python2中/和//都是除整

位運算符

  • &位與,|位或,^異或,<<左移,>>右移
  • ~按位取反,包括符合位
  • &相當于相乘,|相當于相加,^相異出1
  • 1<<2就是將1向左移動兩個位置,同理>>將1向右移動兩個位置

提問5&3=?

5    &    3
0b0000 0101
0b0000 0011    &
-----------------
0b0000 0001    1

5|3=?

5    |    3
0b0000 0101
0b0000 0011    |
-----------------
0b0000 0111    7

5^3=?

5    &    3
0b0000 0101
0b0000 0011    ^
-----------------
0b0000 0110    6    

?1<<3=?

1    <<    3
0b0000 0001   <<3
-----------------
0b0000 1000    8        
相當于
1*(2**3)=85<<3
5*(2*3)=40

5>>3=?

5    &    3
0b0000 0101    >>
-----------------
5//(2**3)    0

~5=?

~5
0b0000 0101    ~
-----------------
0b1111 1010    補碼
0b1000 0110    原碼
-0b110
-6

?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/907078.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/907078.shtml
英文地址,請注明出處:http://en.pswp.cn/news/907078.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

ROS2學習(11)------ROS2通信接口

操作系統&#xff1a;ubuntu22.04 IDE:Visual Studio Code 編程語言&#xff1a;C11 ROS版本&#xff1a;2 ROS 2 提供了多種通信接口&#xff0c;用于節點之間的數據交換。這些接口主要包括話題&#xff08;Topics&#xff09;、服務&#xff08;Services&#xff09;、動作&…

STM32G0xx基于串口(UART)Ymodem協議實現OTA升級包括Bootloader、上位機、應用程序

STM32G0xx基于串口Ymodem協議實現OTA升級包括Bootloader、上位機、應用程序 例程說明一、串口相關的底層配置二、OTA相關的應用層三、Flash相關的操作四、Flash存儲參數相關五、核心部分Ymodem相關六、其他宏配置七、主函數八、使用Python合并文件九、測試結果有疑問歡迎加交流…

Jenkins實踐(6):配置“構建歷史的顯示名稱,加上包名等信息“

Jenkins實踐(6):配置“構建歷史的顯示名稱,加上包名等信息“ 版本:Jenkins 4.262.2 需求:想要在構建歷史中展示,本次運行的是哪個版本或哪個包 操作步驟: 1、先安裝插件Build Name and Description Setter 2、Set Build Name 3、構建歷史處查看展示 插件特性說明 安裝依賴…

快速解決azure aks aad身份和權限問題

現狀分析 AKS cluster 1.31.8啟用aad 身份驗證和kubernetes RBAC 當嘗試執行kubectl get node命令時&#xff0c;系統返回以下錯誤信息&#xff1a; Error from server (Forbidden): nodes is forbidden: User "357517e8-4df5-4daa-88b4-94a84d763ec5" cannot list…

【玩轉騰訊混元大模型】騰訊混元大模型AIGC系列產品深度體驗

【玩轉騰訊混元大模型】騰訊混元大模型AIGC系列產品深度體驗 騰訊推出的系列AI產品&#xff1a;混元大模型、大模型圖像創作引擎、大模型視頻創作引擎、騰訊元寶&#xff0c;共同構成了一個強大的AI生態系統&#xff1b;憑借騰訊自研的大規模預訓練技術和先進的自然語言處理、計…

(自用)Java學習-5.13(Redis,OSS)

核心功能實現 1. 類別導航動態加載 前端實現&#xff1a; // 加載一級分類 $.ajax({url: /category/showFirstMenu?pid0,success: function(resp) {resp.forEach(item > {$(".index-menu").append(<li onmouseover"showSecondMenu(${item.id})">…

2025電工杯A題電工杯數學建模思路代碼文章教學:光伏電站發電功率日前預測問題

完整內容請看文章最下面的推廣群 已更新數據、思路和模型 問題1&#xff1a;基于歷史功率的光伏電站發電特性分析 建模與求解思路&#xff1a; 首先&#xff0c;需要收集光伏電站的歷史發電功率數據、地理位置信息&#xff08;經緯度、海拔、傾角等&#xff09;以及太陽輻照…

Visual Studio 調試中 PDB 與圖像不匹配

Visual Studio 調試中 PDB 與圖像不匹配 在使用 Visual Studio 進行本地或遠程調試時&#xff0c;很多開發者會遇到 PDB 加載失敗、符號不匹配的問題&#xff0c;甚至程序進程未退出&#xff0c;導致 .exe 文件無法成功覆蓋。本文詳細解析了從后臺進程清理、構建產物驗證、模塊…

WebRTC:實時通信的未來之路

WebRTC&#xff1a;實時通信的未來之路 目錄 WebRTC&#xff1a;實時通信的未來之路一、背景介紹二、使用方式三、前途展望 一、背景介紹 隨著互聯網的飛速發展&#xff0c;實時音視頻通信需求日益增長。傳統的音視頻通信多依賴于專有協議和插件&#xff08;如Flash、ActiveX等…

華為OD機試真題——猴子吃桃/愛吃蟠桃的孫悟空(2025B卷:200分)Java/python/JavaScript/C++/C語言/GO六種最佳實現

2025 B卷 200分 題型 本文涵蓋詳細的問題分析、解題思路、代碼實現、代碼詳解、測試用例以及綜合分析; 并提供Java、python、JavaScript、C++、C語言、GO六種語言的最佳實現方式! 本文收錄于專欄:《2025華為OD真題目錄+全流程解析/備考攻略/經驗分享》 華為OD機試真題《猴子…

【Java學習筆記】單例設計模式

單例設計模式 單例模式介紹 1. 所謂類的單例設計模式&#xff0c;就是采取一定的方法保證在整個的軟件系統中 &#xff08;1&#xff09;對某個類只能存在一個對象實例 &#xff08;2&#xff09;并且該類只提供一個取得對象實例的方法 2. 分類&#xff08;兩種方式&#xf…

vue實例 與組件實例

vue實例 與組件實例流程圖 &#x1f9e9; 基本解釋 ? Vue 實例 Vue 實例是通過 new Vue({…}) 創建的對象&#xff0c;是整個應用的根節點。 const vm new Vue({el: #app,data: { msg: Hello Vue } });是整個應用的起點。只有一個根 Vue 實例&#xff08;通常&#xff09;…

Hive 分桶(Bucketing)深度解析:原理、實戰與核心概念對比

一、分桶的意義&#xff1a;比分區更細的粒度管理 1.1 解決分區數據不均勻問題 分區的局限性&#xff1a;分區基于表外字段&#xff08;如時間字段&#xff09;劃分數據&#xff0c;但可能導致部分分區數據量過大&#xff0c;部分過小&#xff0c;無法進一步細化。 分桶的定…

pytest+allure+allure-pytest 報告輸出遇到的問題匯總

文章目錄 前言問題一&#xff1a;module allure has no attribute severity_level問題二&#xff1a;ERROR:file or directory not found: ‐vs問題三&#xff1a;生成的 html 報告是空的&#xff0c;明明有測試用例執行完成&#xff0c;但報告沒有顯示數據 前言 pytestallure…

升級node@22后運行npm install報錯 distutils not found

從node20升級到node22后&#xff0c;在運行 npm install 的時候報了很多 gyp 錯誤&#xff0c;其中包括 npm error npm error ModuleNotFoundError: No module named distutils。 問題原因是我在使用 brew install node22 的過程中自動把 python 升級到了 3.13。而 distutils …

IPD流程落地:項目任務書Charter開發

目錄 簡介 第一個方面&#xff0c;回答的是Why的問題。 第二點&#xff0c;要回答做什么的問題&#xff0c;也就是產品定義What的問題。 第三點就是要回答執行策略與計劃的問題&#xff0c;也就是How、When、Who的問題。 第四點是對上述這些分析的總結分析&#xff0c;要為…

Qt popup窗口半透明背景

半透明彈窗需要paintEvent()接口支持 方法一&#xff1a;使用setStyleSheet設置半透明樣式&#xff0c;如果是子窗口&#xff0c;則可注釋構建函數內屬性設置 class TranslucentWidget : public QWidget { public: explicit TranslucentWidget(QWidget *parent nullptr)…

Excel快捷鍵大全

Excel快捷鍵 工作表操作快速選擇區域快速跳轉/視圖操作單元格公式批量填充與編輯功能鍵打開/關閉工作簿 工作表操作 快捷鍵功能ShiftF11(或Alt→H→I→S)默認插入新工作表到當前工作表左側的左側Alt→E→L→Enter刪除當前工作表&#xff0c;刪除后不可銷&#xff0c;須謹慎操作…

SQLMesh 用戶定義變量詳解:從全局到局部的全方位配置指南

SQLMesh 提供了靈活的多層級變量系統&#xff0c;支持從全局配置到模型局部作用域的變量定義。本文將詳細介紹 SQLMesh 的四類用戶定義變量&#xff08;global、gateway、blueprint 和 local&#xff09;以及宏函數的使用方法。 一、變量類型概述 SQLMesh 支持四種用戶定義變量…

爬蟲學習-Scrape Center spa6 超簡單 JS 逆向

關卡 spa6 電影數據網站&#xff0c;無反爬&#xff0c;數據通過 Ajax 加載&#xff0c;數據接口參數加密且有時間限制&#xff0c;適合動態頁面渲染爬取或 JavaScript 逆向分析。 首先抓包發現get請求的參數token有加密。 offset表示翻頁&#xff0c;limit表示每一頁有多少…