二进制转换、字符编码的演化、Python里使用的编码、浮点数、浮点数的精确度问题

二进制转换

二进制是计算技术中广泛采用的一种数制。二进制数据是用0和1两个数码来表示的数。它的基数为2,进位规则是“逢二进一”,借位规则是“借一当二”,由18世纪德国数理哲学大师莱布尼兹发现。当前的计算机系统使用的基本上是二进制系统,数据在计算机中主要是以补码的形式存储的。计算机中的二进制则是一个非常微小的开关,用“开”来表示1,“关”来表示0。

  • 古时候敌人来了,如何通信呢?

①派人跑着去通知,速度太慢,等人回来,仗也打完了。
      ②点狼烟信号,那要怎么点呢?

来一个人点一根?来了5000人,点5000根,不用打了,自己给自己烧死了。

那就约定好,来10个人点1根,来100个人点2根,来1000个人点3根,来5000个点4根,来10000个点5根。

可是这样又不太精确了,怎样可以更加精确呢?

①假如有20个狼烟孔,狼烟孔点燃了代表有人,没点燃代表没人。这时候,1个敌人来了,点1根狼烟。

②又来了2个敌人呢?就把第一个狼烟孔灭掉,点燃第二个,这样只点燃第二个孔就代表两个人。

③现在来了3个敌人呢?再把第一个狼烟孔点着了就表示3个人。

④那如果来了4个人敌人,现在有两根狼烟都点着了只能表示3个人,所以只好再点一根,同时还要灭掉前面的两根,因为第三根这一根狼烟就可以表示4个敌人。

。。。。。。。。。。。。。。。

  • 1,2,4,8,16,32,64...按照 2 的 n次方,来准确地表示敌人的数量了。

  • 二进制与十进制的转换小练习

先把他们代表的值依次写出来,然后再根据10进制的值把数填到相应位置,就好了。

十进制转二进制方法相同,只要对照二进制为1的那一位对应的十进制值相加就可以了。

256     128     64     32     16     8     6    4    2

1          0       1       0       1      0     1    1    0     =  342

  • 使用Python内置方法-bin(n)计算

ASCII码与二进制

  • 计算机如何把文字转换成二进制?

  • 对应关系表——ASCII码表

SCII(American Standard Code for Information Interchange,美国信息交换标准代码)是基于拉丁字母的一套电脑编码系统,主要用于显示现代英语和其他西欧语言。它是现今最通用的单字节编码系统,并等同于国际标准ISO/IEC 646。

由于计算机是美国人发明的,因此,最早只有127个字母被编码到计算机里,也就是大小写英文字母、数字和一些符号,这个编码表被称为ASCII编码,比如大写字母 A的编码是65,小写字母 z的编码是122。后128个称为扩展ASCII码。

  • 文字转换为二进制

        一个空格对应的数字是0          翻译成二进制就是0(注意字符‘0‘和整数0是不同的)
        一个对勾√对应的数字是251       翻译成二进制就是11111011

  • 在ASCII码表里,最多的字符是255位,所以我们使用8位来表示1个字符

①每一位0或者1的空间单位为bit(比特),这是计算机中“最小的表示单位”。

②8bit = 1bytes,是计算机中“最小的存储单位”,1bytes缩写为1B。

字符编码的演化

  • GBK18030与GB2312与GBK1.0

  • 全世界有上百种语言,日本把日文编到Shift_JIS里,韩国把韩文编到Euc-kr里,各国有各国的标准,就会不可避免地出现冲突,结果就是,在多语言混合的文本中,显示出来会有乱码。

                                                  Python里使用的编码

  • Python2.x 默认编码是ASCII

Python2.x 要想修改为UTF-8 要在开头加上 “#! -*- coding: utf-8 -*-”

  • Python3.x 默认编码是UTF-8

基本数据类型

  • 浮点数

  • 科学计数法

                                                 

                                                  浮点数的精确度问题

  • 在Python中,浮点数只能精确的存储16位。

原文地址:https://www.cnblogs.com/wqq0723/p/9516827.html

时间: 2024-10-03 17:18:14

二进制转换、字符编码的演化、Python里使用的编码、浮点数、浮点数的精确度问题的相关文章

Python基础 二进制和字符编码

二进制定义 二进制是计算技术中广泛采用的一种数制.二进制数据是用0和1两个数码来表示的数.它的基数为2,进位规则是"逢二进一",借位规则是"借一当二",由18世纪德国数理哲学大师莱布尼兹发现.当前的计算机系统使用的基本上是二进制系统,数据在计算机中主要是以补码的形式存储的.计算机中的二进制则是一个非常微小的开关,用"开"来表示1,"关"来表示0. 二进制与十进制转换 我们已经发现,二进制的第n位代表的十进制值都刚好遵循着2的n

python 二进制转换

#二进制装换msg = "大家好"msg1 = msg.encode(encoding='utf-8')#转换成二进制print(msg1)msg2 = msg1.decode('utf-8') #把二进制转换回来print(msg2)'''----------------------python 3.6.2-------------------------''''''---------------希望新学的朋友可以一起互相讨论------------------'''

使用c++11标准库转换字符编码

转自:http://www.cnblogs.com/LinuxHunter/archive/2013/01/06/2848293.html #include <stdio.h> #include <locale> #include <codecvt> const std::string ws2s( const std::wstring& src ) { std::locale sys_locale(""); const wchar_t* da

python 之字符串和编码

字符编码 我们已经讲过了,字符串也是一种数据类型,但是,字符串比较特殊的是还有一个编码问题. 因为计算机只能处理数字,如果要处理文本,就必须先把文本转换为数字才能处理.最早的计算机在设计时采用8个比特(bit)作为一个字节(byte),所以,一个字节能表示的最大的整数就是255(二进制11111111=十进制255),如果要表示更大的整数,就必须用更多的字节.比如两个字节可以表示的最大整数是65535,4个字节可以表示的最大整数是4294967295. 由于计算机是美国人发明的,因此,最早只有1

[1][python基础]字符串和编码[2]

[1][python基础]字符串和编码[2] 字符编码 我们已经讲过了,字符串也是一种数据类型,但是,字符串比较特殊的是还有一个编码问题. 因为计算机只能处理数字,如果要处理文本,就必须先把文本转换为数字才能处理.最早的计算机在设计时采用8个比特(bit)作为一个字节(byte),所以,一个字节能表示的最大的整数就是255(二进制11111111=十进制255)如果要表示更大的整数,就必须用更多的字节.比如两个字节可以表示的最大整数是65535,4个字节可以表示的最大整数是4294967295.

python语言中的编码问题

在编程的过程当中,常常会遇到莫名其妙的乱码问题.很多人选择出了问题直接在网上找答案,把别人的例子照搬过来,这是快速解决问题的一个好办法.然而,作为一个严谨求实的开发者,如果不从源头上彻底理解乱码产生的机制,并由此寻求解决问题的根本路径,那么永远不能从码农的阴影中摆脱出来.下面就来一起了解一下计算机编码问题的来龙去脉. ASCII 众所周知,计算机中的所有数据,不论是文字.图片.视频.还是音频文件,本质上最终都是按照类似 01010101 的二进制形式存储的.然而,计算机中的字符,并不能完全以这种

Python 2 中的编码

在 Python 尤其是 Python2 中,编码问题是困扰开发者尤其初学者的一大问题.什么 Unicode/UTF-8/str ,又是 decode/encode 的,搞得人头都大了.其实不然,这有点类似 Java 中 java.io 包一样,看似庞大难懂,但是可以非常精细地定制需求. 编码 计算机只可以存储和处理二进制数据,所以从文字到计算机可以识别的二进制之间需要一道对应关系.于是便有了ASCII(American Standard Code for Information Interch

python中的字符串编码问题——2.理解ASCII码、ANSI码、Unicode编码、UTF-8编码

ASCII码:全名是American Standard Code for Information Interchange,ASCII码中,一个英文字母(不分大小写)占一个字节的空间,范围0x00~0x7f,即0-128. ANSI码:ANSI编码是一种对ASCII码的拓展.ANSI编码用0x00~0x7f 范围的1 个字节来表示 1 个英文字符,超出一个字节的 0x80~0xFFFF 范围来表示其他语言的其他字符.前126个与ASCII码相同,之后的字符全是某个国家语言的所有字符.容量2的16次

【设计理念】编码与演化

编码与演化 对于服务端(server-side)应用程序,可能需要执行滚动升级 ,一次将新版本部署到少数几个节点,检查新版本是否运行正常,然后逐渐部完所有的节点.这样无需中断服务即可部署新版本,为频繁发布提供了可行性,从而带来更好的可演化性. 对于客户端(client-side)应用程序,升不升级就要看用户的心情了.用户可能相当长一段时间里都不会去升级软件. 这意味着,新旧版本的代码,以及新旧数据格式可能会在系统中同时共处.系统想要继续顺利运行,就需要保持双向兼容性: 向后兼容 新代码可以读旧数