python学习day2:进制+码制+逻辑运算符

news2025/5/24 14:36:28

进制

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))  # 输出: 0xA

binary_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)=8

5<<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.coloradmin.cn/o/2384666.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【分布式文件系统】FastDFS

1.简介 讲这个之前&#xff0c;相信很多人特别是学java的&#xff0c;肯定在做苍穹外卖的时候肯定接触过一个东西&#xff0c;叫做阿里云OSS&#xff0c;他们的功能都差不多&#xff0c;但是阿里云的这个是要付费的&#xff0c;而FastDFS是免费开源的&#xff0c;是由淘宝资深…

word为章节标题添加自动编号

问题&#xff1a; 如何为word文档中的多级标题添加自动编号&#xff1f; 方法&#xff1a; 1、首先为文档各级标题设置格式样式&#xff0c;一级标题使用样式中的“标题 1”&#xff0c;二级标题使用“标题 2”&#xff0c;三级使用“标题 3”&#xff0c;也就是直接在开始—…

无人机飞行间隔安全智能评估、安全风险评估

无人机空中安全飞行评估需结合改进碰撞模型、蒙特卡洛仿真、安全间隔反推及动态避障策略&#xff0c;通过多机型分类与实时数据融合&#xff0c;实现从理论建模到实际部署的全流程管控&#xff0c;为城市低空密集飞行提供安全保障。 需求 无人机飞行间隔安全智能评估 无人机…

【VLNs篇】03:VLMnav-端到端导航与视觉语言模型:将空间推理转化为问答

栏目内容论文标题End-to-End Navigation with Vision-Language Models: Transforming Spatial Reasoning into Question-Answering (端到端导航与视觉语言模型&#xff1a;将空间推理转化为问答)核心问题如何利用大型视觉语言模型&#xff08;VLM&#xff09;实现端到端的机器人…

PCB设计实践(二十五)贴片电阻与插件电阻的全面解析:差异、演进与应用场景

一、基础结构与技术原理差异 物理结构差异 贴片电阻&#xff08;SMD Resistor&#xff09;采用表面贴装技术&#xff08;SMT&#xff09;&#xff0c;其主体为扁平长方体或圆柱形结构&#xff0c;两端金属化电极直接与PCB焊盘接触。典型封装尺寸包括0402&#xff08;1.00.5mm&a…

Canvas设计图片编辑器全讲解(一)Canvas基础(万字图文讲解)

一、前序 近两年AI发展太过迅速&#xff0c;各类AI产品层出不穷&#xff0c;AI绘图/AI工作流/AI视频等平台的蓬勃发展&#xff0c;促使图片/视频等复杂内容的创作更加简单&#xff0c;让更多普通人有了图片和视频创作的机会。另一方面用户内容消费也逐渐向图片和视频倾斜。在“…

利用Qt绘图随机生成带多种干扰信息的数字图片

背景 在学习AutoML或ML的过程中&#xff0c;需要一些图片类型的数据做分类预测训练&#xff0c;于是想到尝试最简单的数字识别&#xff0c;且单个数字的识别&#xff0c;也就是y的取值只有10种可能&#xff0c;即0到9。 以下参考代码分别考虑了数字字体的大小、数字颜色的深浅…

STM32——从点灯到传感器控制

STM32基础外设开发&#xff1a;从点灯到传感器控制 一、前言 本篇文章总结STM32F10x系列基础外设开发实例&#xff0c;涵盖GPIO控制、按键检测、传感器应用等。所有代码基于标准库开发&#xff0c;适合STM32初学者参考。 二、硬件准备 STM32F10x系列开发板LED模块有源蜂鸣器…

java day14

接昨天&#xff0c;响应 响应 就是我们在处理请求的时候&#xff0c;里面的return 其实方法里面写的return的返回平常的什么字符串啊什么等等&#xff1b;这些东西都是直接返回&#xff1b;如果是一个对象的话&#xff0c;我们会按json的格式返回&#xff1b; 这些都依赖于一…

Tailwind css实战,基于Kooboo构建AI对话框页面(一)

在当今数字化时代&#xff0c;AI 助手已成为网站和应用不可或缺的一部分。本文将带你一步步使用 Tailwind CSS 和 Kooboo 构建一个现代化的 AI 对话界面框。 一、选择 Kooboo平台 的核心优势 智能提示&#xff1a;在输入 class 属性时&#xff0c;会自动触发 Tailwind CSS 规则…

重塑数学边界:人工智能如何引领数学研究的新纪元

目录 一、人工智能如何重新定义数学研究的边界 &#xff08;一&#xff09;数学与AI的关系&#xff1a;从基础理论到创新思维的回馈 &#xff08;二&#xff09;AI的创造力&#xff1a;突破传统推理的局限 &#xff08;三&#xff09;AI对数学研究的潜在贡献&#xff1a;创…

docker部署并测试翻译模型-CSANMT连续语义增强机器翻译

1.模型选择CSANMT-Translation模型&#xff1a; 2.修改docker-compose.yml文件&#xff0c;重新定义模型缓存路径和存储路径 其中MODELSCOPE_CACHE指定了模型的下载路径。 3.运行docker compose up -d --build&#xff0c;提示出现报错&#xff1a;Error response from daemon…

Spring Boot项目配置核心 - pom.xml的依赖管理与构建优化

基础架构 <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVe…

告别手抖困扰:全方位健康护理指南

手抖&#xff0c;医学上称为震颤&#xff0c;是常见的身体症状&#xff0c;可能由多种原因引发&#xff0c;了解其成因并采取科学护理措施&#xff0c;对改善症状、维护健康至关重要。 生理性手抖往往因情绪激动、过度劳累、大量饮用咖啡或酒精等引起&#xff0c;这种手抖通常较…

图解深度学习 - 特征工程(DL和ML的核心差异)

前言 深度学习通过自动化特征提取&#xff0c;简化了机器学习工作流程&#xff0c;它让解决问题变得更加简单。因为深度学习将特征工程完全自动化&#xff0c;而特征工程曾经是机器学习工作流程中最关键的一步。 一、机器学习特征工程 机器学习为什么需要特征工程&#xff08…

Datacom-hcia~Datacom-hcie学习笔记索引

hcia VLAN工作原理实验案例(超详细)https://blog.csdn.net/Fanmeang/article/details/145855768?spm1001.2014.3001.5502 交换机工作原理实验案例https://blog.csdn.net/Fanmeang/article/details/145802382?spm1001.2014.3001.5502 ARP理论实验案例&#xff08;超详细&am…

受不了github的网络限制了,我开源了一个图床工具 gitee-spring-boot-starter

嗨嗨嗨~ 我老马又又来了&#xff01;&#xff01;&#xff01;上次写了一篇我开源了一款阿里云OSS的spring-boot-starter&#xff0c;然后买的资源包到期了&#xff0c;后面又想白&#xff08;开&#xff09;嫖&#xff08;源&#xff09;的路子&#xff0c;首先想到了使用gith…

2025年医美行业报告60+份汇总解读 | 附 PDF 下载

原文链接&#xff1a;https://tecdat.cn/?p42122 医美行业在消费升级与技术迭代的双重驱动下&#xff0c;已从边缘市场逐步走向主流。数据显示&#xff0c;2024 年中国医美市场规模突破 3000 亿元&#xff0c;年复合增长率达 15%&#xff0c;但行业仍面临正品率不足、区域发展…

API自动化与持续集成核心实战知识点!

想象一下&#xff0c;你开发的API像一辆跑车&#xff0c;性能强劲&#xff0c;但你如何确保它每次启动都完美无缺&#xff1f;或者你的代码像一道复杂的菜肴&#xff0c;如何保证每次更新都不破坏原有味道&#xff1f;答案就是API自动化测试与持续集成&#xff01;SuperTest让你…

基于SpringBoot+Vue的社区医院信息平台设计与实现

项目背景与概述 随着医疗健康信息化的发展&#xff0c;社区医院的管理逐渐由传统的手工模式转向信息化管理。为了提高医院的管理效率、减少人工操作、提升服务质量&#xff0c;开发一个高效且实用的社区医院信息平台显得尤为重要。本系统基于Spring Boot框架与MySQL数据库设计…