首页 > 其他分享 >day04 进制和编码

day04 进制和编码

时间:2023-11-15 14:13:30浏览次数:34  
标签:编码 字节 1024 二进制 day04 00000000 unicode 进制

day04 进制和编码

课程目标:讲解计算机中一些必备的常识知识,让学员了解一些常见名词背后的含义(重在理解)。

课程概要:

  • python代码的运行方式
  • 进制
  • 计算机中的单位
  • 编码

1.Python代码运行方式

  • 脚本式

    python3 ~/PycharmProjects/day03/6.作业题讲解.py
    
  • 交互式

    python3
    
    截屏2020-10-25 下午5.15.51

2.进制

计算机中底层所有的数据都是以 010101的形式存在(图片、文本、视频等)。

  • 二进制

    0
    1
    10
    

    截屏2020-10-25 下午5.36.39

  • 八进制

  • 十进制

  • 十六进制

image-20201025174321969

2.1 进制转换

image-20201025180124802
v1 = bin(25) # 十进制转换为二进制
print(v1) # "0b11001"

v2 = oct(23) # 十进制转换为八进制
print(v2) # "0o27"

v3 = hex(28) # 十进制转换为十六进制
print(v3) # "0x1c"
i1 = int("0b11001",base=2) # 25

i2 = int("0o27",base=8) # 23 

i3 = int("0x1c",base=16) # 28 

3. 计算机中的单位

由于计算机中本质上所有的东西以为二进制存储和操作的,为了方便对于二进制值大小的表示,所以就搞了一些单位。

  • b(bit),位

    1,1位
    10,2位
    111,3位
    1001,4位
    
  • B(byte),字节

    8位是一个字节。
    
    10010110,1个字节
    10010110 10010110,2个字节
    
  • KB(kilobyte),千字节

    1024个字节就是1个千字节。
    
    10010110 11010110  10010111 .. ,1KB
    1KB = 1024B= 1024 * 8 b
    
  • M(Megabyte),兆

    1024KB就是1M
    1M= 1024KB = 1024 * 1024 B = 1024 * 1024 * 8 b
    
  • G(Gigabyte),千兆

    1024M就是1G
    1 G=  1024 M=  1024 *1024KB =  1024 * 1024 * 1024 B =  1024 * 1024 * 1024 * 8 b
    
  • T(Terabyte),万亿字节

    1024个G就是1T
    
  • ...其他更大单位 PB/EB/ZB/YB/BB/NB/DB 不再赘述。

做个小练习:

  • 假设1个汉字需要2个字节(2B=16位来表示,如:1000101011001100),那么1G流量可以通过网络传输多少汉字呢?(计算机传输本质上也是二进制)

    1G = 1024M = 1024 * 1024KB = 1024 * 1024 * 1024 B
    每个汉字需要2个字节表示
    1024 * 1024 * 1024/2 = ?
    
  • 假设1个汉字需要2个字节(2B=16位来表示,如:1000101011001100),那么500G硬盘可以存储多少个汉字?

    500G = 500 * 1024M = 500 * 1024 * 1024KB = 500 * 1024 * 1024 * 1024 B
    500 * 1024 * 1024 * 1024 / 2 = ?
    

4.编码

编码,文字和二进制之间的一个对照表。

4.1 ascii编码

ascii规定使用1个字节来表示字母与二进制的对应关系。

00000000
00000001    w
00000010    B
00000011    a
...
11111111

2**8 = 256

image-20201026111741235

image-20201026111752410

4.2 gb-2312编码

gb-2312编码,由国家信息标准委员会制作(1980年)。

gbk编码,对gb2312进行扩展,包含了中日韩等文字(1995年)。

在与二进制做对应关系时,由如下逻辑:

  • 单字节表示,用一个字节表示对应关系。2**8 = 256
  • 双字节表示,用两个字节表示对应关系。2**16 = 65536中可能性。

4.3 unicode

unicode也被称为万国码,为全球的每个文字都分配了一个码位(二进制表示)。

  • ucs2

    用固定的2个字节去表示一个文字。
    
    00000000 00000000     悟
    ...
    
    2**16 = 65535
    
  • ucs4

    用固定的4个字节去表示一个文字。
    00000000 00000000 00000000 00000000  无
    ...
    2**32 = 4294967296
    
文字     十六进制            二进制 
 ȧ        0227           1000100111
 ȧ        0227         00000010 00100111                       ucs2
 ȧ        0227         00000000 00000000 00000010 00100111     ucs4
 
 乔       4E54           100111001010100
 乔       4E54         01001110 01010100                       ucs2
 乔       4E54         00000000 00000000 01001110 01010100     ucs4
 
 

标签:编码,字节,1024,二进制,day04,00000000,unicode,进制
From: https://www.cnblogs.com/nf01/p/17833688.html

相关文章

  • mojo编程语言:编译后的mojo二进制执行文件调用python库报错——设置MOJO_PYTHON_LIBRAR
    代码:frompythonimportPythonfnf()raises:#ThisisequivalenttoPython's`importnumpyasnp`letnp=Python.import_module("numpy")leta=np.array([1,2,3])print(a)fnmain()raises:f() mojo编译后执行,报错:Mojo/Pyth......
  • 机器学习——编码器和解码器架构
    正如我们在 9.5节中所讨论的,机器翻译是序列转换模型的一个核心问题,其输入和输出都是长度可变的序列。为了处理这种类型的输入和输出,我们可以设计一个包含两个主要组件的架构:第一个组件是一个编码器(encoder):它接受一个长度可变的序列作为输入,并将其转换为具有固定形状的编码......
  • requests.post 数据字段编码问题的方法
    今夜,我要在代码的海洋中遨游,捕捉那只顽皮的bug。作为一名程序员,不断解决问题是日常的工作。而今天我要解决的是requests.post数据字段编码问题。在编程中,数据的编码问题常常让人头疼,它可能会导致程序无法正常运行。那么,如何解决这个问题呢?接下来,我就为大家详细介绍一下。相信通过......
  • 解惑一:关于mov指令后面的数据是十进制还是十六进制?AL当中的进位是否影响AH?
    Part1在看《汇编语言》的时候,书上写了差不多这样意思的一段话(我用自己的话概述一下):当指令使用了寄存器AL或者AH,这条指令会认为AL和AH是两个不相关的寄存器,此时AL是作为一个独立的八位寄存器。不要错误地认为,诸如addal,85H  addal,93H的指令产生的进位会存储在AH......
  • 【笔记】二进制拆分
    二进制拆分二进制拆分是对多重背包的一种优化方式,可以极大的优化多重背包的时间。原理一个数可以被拆分为任意二进制的和。例如:$7=2^0+2^1+2^2$任意一个数都可以表示为几个\(2\)的多少次方之和的形式。我们回顾下完全背包问题。背包容积为\(C\),有\(n\)种物品......
  • Day04java方法
    所有学习内容来自:狂神说javaJava方法详解一、方法java方法是语句的集合,它们在一起执行一个功能。方法是解决一类问题的步骤的有序集合方法包含于类或对象中方法在程序中被创建,在其他地方被引用设计方法的原则:设计方法时最好保持方法的原子性,就是一个方法值完成一个功能,这......
  • Python字符的编码encode和解码decode
    相关阅读:字符集(CharacterSet)和编码(Encoding)的历史演化 Python字符的编码encode和解码decode进行编码str.encode("编码") 进行解码bytes.decode("编码")  s="周杰伦"bs1=s.encode("gbk")#b'xxxx'bytes类型bs2=s.encode("utf-8"......
  • RKMPP 硬编码之mpi_enc_test .c解析
    一.简介mpi_enc_test是rockchip官方编码demo本篇文章进行mpi_enc_test的代码解析,编码流程解析二.环境介绍硬件环境:ArmSoM-W3RK3588开发板软件版本:OS:ArmSoM-W3Debian11三.mpp编解码流程解析<center>图3.1RKMPP编码器接口为用户提供了输入图像数据,输出码......
  • day04
    1selenium等待元素加载#程序执行速度很快---》获取标签---》标签还没加载好---》直接去拿会报错#显示等待:当你要找一个标签的时候,给它加单独加等待时间#隐士等待:只要写一行,代码中查找标签,如果标签没加载好,会自动等待 browser.implicitly_wait(10)2selenium元素操作#......
  • 【树】哈夫曼树-频率大的短编码
    解决问题:对一篇电报编码:Helloworld这里面除去符号,最多的字母是o,若要转换为01二进制尽量编码短;最少的字母h,编码长。h1;e1;r1;d1;w1;o2;l3;-开始手动编码--每次选取频次最小左小右大做孩子,加入一个父节点(值为孩子频次和)编码: -树最多2X元素长度-1个节......