人海茫茫
相识真好

决战Python之巅(五)

前言

Oh~yeah,昨天把作业交上去了。90分,赚了40块钱哈哈哈。
透露一下,我是在路飞学城学的Python全栈开发(不是打广告!!不是打广告!!不是打广告!!我没收广告费!!!!),然后他是有奖学金的,作业写的好或者学得快是会给你提供奖学金,奖学金到最后是可以提现滴~~
好了,讲重点。

知识回顾

第二模块一开始学的是最最最基本的二进制,稍微接触过代码或者学过一点的计算机知识的应该都知道,就不多说,介绍下:

二进制及二进制转换

众所周知,计算机最底层只能识别简单的0和1,所以你输进去的数据到最后都会转换成0和1,这是前提。
十进制大家都知道吧,十进制的数“逢十进一”,二进制则是“逢二进一”。例如:
十进制的“1”在二进制中就是“1”,- -这个一样的,但是十进制中的“2”,在二进制中是什么呢?因为“逢二进一”,所以在二进制中则是“10”,十进制0~10在二进制中的对应为:

   十进制 :              二进制:
    0           =       00000000
    1           =       00000001
    2           =       00000010
    3           =       00000011
    4           =       00000100
    5           =       00000101
    6           =       00000110
    7           =       00000111
    8           =       00001000
    9           =       00001001
   10           =       00001010

挺简单吧…其实就是 二进制的第n位代表的十进制就是2n

字符编码演化

ASCII码与二进制

好了,既然知道了二进制(- -不会的寄几学去),那么现在有一个问题:我们输入的是A,计算机存的是01010(假设是这个),我们又输入B,计算机存的又是另一串二进制,它是怎么知道我输入的是什么,或者说A为什么是这串二进制,B又是另一串呢?
…其实,这都是人为规定的。那么现在又有一个问题:你可以规定0101代表某个字符,我也可以规定0101代表另一个啊?为了解决这种“乱象”,ASCII码横空出世,它最初是美国国家标准,供不同计算机在相互通信时用作共同遵守的西文字符编码标准,它已被国际标准化组织(International Organization for Standardization, ISO)定为国际标准,称为ISO 646标准。适用于所有拉丁文字字母。
决战Python之巅(五)
这样,对于“Kris”,存的时候就有一串规定的二进制数据,“K”是1001011,“r”就是1110010,“i”就是1101001,“s”就是01110011。这里举得例子不太好,但是大家可以发现,这些二进制数据又长又短,比如说换行符就是1010,而“K”是1001011,他们存在内存里是这样的10101001011,那么计算机怎么知道哪一段代表什么字符呢? ASCII中有这样一个规定,每一个字符都用8位二进制表示,不足8位的前面用0补足。什么意思呢?还是那个换行符,十进制转换成二进制是1010,只有4位,所以前面4位需要用0补上,也就是0000 1010,这样就够8位,而且本身的值也没有改变。这样,计算机就知道每8位就代表一个字符。

    这里扩展一个小知识:
    8bit = 1bytes ,bit:比特,一个二进制位,最小的表示单位
    	           bytes:字节,最小的存储单位,1bytes缩写为1B
    1KB = 1024B
    1MB = 1024KB
    1GB = 1024MB
    ....

Unicode编码

细心的同学可能发现了,ASCII码中只有拉丁字母那些西方的语言,没有我大中华的汉字啊!!这是万万不行的,所以呢在1981年5月1日,国家标准总局发布了GB2312,又称国标码,收录汉字6763个。而后又对其进行扩展。
但是呢,问题又来了:我们国家可以有我们国家的国标码,俄罗斯也有他们自己的国标码,那万一中俄友好交流时,我们计算机上装了俄罗斯的软件,那岂不是会乱码?(为什么会乱码呢?假设0101在我们国标码中代表的是“中”这个字,在俄罗斯的国标码中表示的不知道是什么,但计算机只存0101,它不知道我们用的是哪套标准)所以呢,就有了Unicode编码,又称万国码,将世界上的每种语言的每个字符都定义了唯一的一个编码。这样就解决了问题。

UTF-8

然而,正当Unicode编码“风靡全球”时,美国人他们不干了,为什么呢?在原先的ASCII码中,一个英文字符只占1个字节,但用了Unicode编码后,一个英文字符要用2个字节(Unicode编码规定每个字符占2个字节),这就意味着1部1个G的美国小电影,现在就要变成2个G,容量直接翻一番。
所以,后来又推出了一套压缩后的Unicode编码,称为UTF-8,这套编码里,ASCII码中的占一个字节,欧洲字符占2个,东亚的用3个字节…

Python 2.x 中要显示中文字符,需要在文件头写:
# -*- coding: utf-8 -*-

浮点数

这里补充一个知识点:浮点型。你也可以理解为小数…我就是这么理解的,其实也不怎么用。
Python中计算高精度的浮点数方法:

# 借助decimal模块的“getcontext”和“Decimal”方法
from decimal import *
getcontext().prec = 50 # 精度为50,就是小数点后面几个数字
a = '3.141592653513651054608317828332'
Decimal(a)
赞(0) 打赏
未经允许不得转载:老康的学习空间 » 决战Python之巅(五)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏