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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈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表示每一页有多少…