美文网首页
2018-09-27day3进制和字符串

2018-09-27day3进制和字符串

作者: 我是你唯一的py文件 | 来源:发表于2018-09-27 19:46 被阅读0次

01-进制

计算机在存储数字的时候都是以二进制的形式去存的
十进制、十六进制、八进制、二进制

1.十进制

基数:1,2,3,4,5,6,7,8,9,0
进位:逢十进一
每一位的值:123
111 = 110^0 + 110^1 + 1*10^2

2.二进制

所有二进制数都是有0和1组成的:011001
基数:1 -0
进位:逢2进1
每一位的值: 11011=12^0 + 12^1 + 02^2 + 12^3 + 12^4 =27
111 = 1
2^0 + 12^1 + 12^2=7

3.八进制

基数:0,1,2,3,4,5,6,7
进位:逢8进1
111=18^0 + 18^1 + 1*8^2=73

4.十六进制

基数:09,af(A~F)
进位逢十六进1
每一位的值:111=116^0 + 116^1 + 1*16^2=273

5.进制之间的转换.

a.其他进制转换成10进制:每一位上的数乘以进制幂次数的和
b.十进制转其他进制:辗转取余法
c.二进制转8进制:每三位二进制转换成1位的8进制
d.二进制转16进制:每四位二进制转换成1位对进制的支持

6.Python对进制的支持

Python支持通过二进制、八进制、十进制和十六进制的形式来直接表示整数

a.十进制:直接写的数字的值都是十进制的数

100

b.二进制:需要加前缀 ->0b

print(0b10)   #2

c.八进制:需要加前缀->0o/0O

0o67

d.十六进制:需要加前缀->0x/0X

0x78ac

e.函数代码的进制的转换
bin(整数) -->将括号中的整数,转换成二进制形式的数

print(bin(10),bin(0o56))

oct(整数) -->将括号中的整数,转换成八进制形式的数

print(oct(0b110110),oct(10))

hex(整数) -->将括号中的整数,转换成16进制形式

print(hex(10),hex(0b110110))

02原码反码和补码

计算机在存数字的时候,存的是数字的二进制的补码

计算机计算的时候也是补码,最后结果看到的是原码

计算机 内存的最小单位是位:1位只能存储两个状态

8位 = 1字节

a.原码:整数数字的二进制形式

最高位是符号位,如果是正数符号位位0,负数符号位为1

10的原码 00000000 00001010

-10的原码 10000000 00001010

print(-0b0000000000001010)

b.反码

正数的反码就是它的原码

负数的反码就是这个数的原码的符号位不变,然后其他位置上的数取反(0->1,1->0)

 -10 ->(原码)1000000 00001010 ->反码11111111 11110101

c.补码

正数的补码就是它的原码

负数的补码是它的反码加1

-10 ->1111111 11110101 ->(补码) 1111111 11110110

总结:正数的反码和补码都是原码,负数的补码是反码加1,反码是原码的符号位不变其他位取反。

为什么计算机存储的时候存补码?:因为计算机中只有加法器,只能进行加操作.存原码对负数进行加操作的时候有问题

04位运算

位运算符:

& 按位与
按位或
^ 异或
~ 取反
>> 右移
<< 左移

1.&(按位与)

数字1 & 数字2 :二进制的每一位,两个都为1结果才是1,否则为0
 3 & 2 --> 00000011 & 00000010 ==00000010 #2
作用让制定位上数置零,或者保留某一位上的值

2.|(按位或)

数字1 | 数字2:只要有一个为1结果就是1;否则两个都为0结果才是0

3|2 -->00000011 | 00000010=00000011

3.^(异或)

数字1 ^ 数字2:不同1相同为0

3^2 --> 00000011 | 00000010= 00000001 #1

-3^2 --> 11111101^ 00000010=10000001 #~1取反

4.~(取反)

~数字:将每一位取反

~3-->11111100=#-4

~-3-->00000010=2

5.左移(重点)

数字 << 位数:将补码向左移动指定的位数补上指定的0的个数

规律(正数负数都适用 m << n == m*(2^n)

print(10 << 1) #20
print(10 << 2) #40

6.右移

数字 >> 位数:将补码向右移动指定的位数,符号位不变,在符号位的后面补指定个数的0(正)或者1(负)

规律(只适用于正数):

m >> n == m//(2^n)
print(-15>>1)

04认识字符串

字符串(str)

1.什么是字符串

python中通过单引号或者双引号引起来的字符集就是字符串
字符串中引号中的字符集,就是由各种不同的字符来组成的。
12313'
'asdada'
'撒打算打打'
'$%^&FGHJKLBNMLL:><M(。-ω-)zzz'

2.Unicode编码

Python中的字符串中的字符采用的是Unicode编码
Unicode编码,是通过两个字节来对一个字符进行编码,0~2^15-1。几乎包含了世界上所有的符号。
ASCII编码:是通过一个字节来对一个字符进行编码
Unicode编码包含了ASCII码表
str1 ='hhh'
chr(数字):获取数字在Unicode编码中对应的字符,返回的是只有一个字符的字符串
print(chr(97))  #a
print(chr(0x1B78))

ord(字符):获取字符对应的Unicode码

print(ord('畅'))
print(chr(32993))
可以直接在字符串中写字符对应的编码值,格式:/u十六进制的编码值
str2='\u24464\u30021'

print(str2)

3.转义字符(适用于所有语言)

一些特殊功能和具有特殊意义的字符,直接放在字符串的引号中的无效,需要通过\来转义

\n -->换行

\t-->制表符 table

\ -->\

""-->""

print('asdf\nasd')  #asdf
                    #asd
print('asdasd\'')   #asdasd'

相关文章

网友评论

      本文标题:2018-09-27day3进制和字符串

      本文链接:https://www.haomeiwen.com/subject/dcveoftx.html