day3_进制与字符串

2018-09-27  本文已影响0人  逆流而上_2eb6

1.进制

  计算机在存储数字的时候是以二进制的形式去存的,进制有二进制,八进制,十进制,十六进制,如下表所示:

进制 基数 进位 示例
二进制 01 2 11=1*20+1*21
八进制 01234567 8 43=3*80+4*81
十进制 0123456789 10 43=3*100+4*101
十六进制 0~9 AF(af) 16 A4=4*160+10*161

1.1进制的转换

a:转换为十进制:每一位上的数乘以进制幂次数,然后求和。
b:十进制转换成其他进制:辗转取于法。
c:二进制转换为8进制:每3位二进制转换位1位,如0 100 011(二进制) 0 43
d:二进制转换为16进制:每4位二进制转换位1位,如0 1001 0011(二进制) 0 93

二进制辗转取余法.PNG

1.2python对进制的支持:

  python支持通过各个进制来直接表示整数。各进制数表示如下表所示:

进制 前缀 示例
二进制 0b/0B 0b101
八进制 0o\0O 0o75
十进制 100
十六进制 0x\0X 0xA5

  进制转化代码:

bin(整数)-->将括号中的整数转化成二进制数;
oct(整数)-->将括号中的整数转换成八进制数;
hex(整数)-->将括号中的整数转换成十六进制;

print(bin(160),bin(0o56),bin(0xA5))
print(oct(151),oct(0b11),oct(0x44))
print(hex(1023),hex(0b111),hex(0o57))

2.原码补码与反码

  计算机在存储数字时,存的时数字的二进制的补码。计算机内存的最小单位是位,1位有二个状态,8位为一个字节,计算机中只有加法计数器,所以才会产生补码来进行减法计算。

原码:整数数字的二进制数,最高位为符号位,正数符号位为0,负数符号位为1,如10的原码为00000000 00001010,-10为10000000 0001010。
反码:负数的原码符号位不变,其他位的数取反(0—>1,1—>0),即为反码;正数的反码就是他的原码。如10的补码为00000000 00001010,-10反码为11111111 11110101。
补码:正数的补码为他的原码;负数的补码是他的反码加一。如10的补码为00000000 00001010,-10的补码为11111111 11110110。

3.位运算

  位运算符: &(按位与),|(按位或),^(异或),~(取反),>>(右移),<<(左移),计算机存储的是补码,读取计算结果要读原码

  &(按位与):同1才为1。

& 0 1
0 0 0
1 0 1
print(3&2) #2
print(-3&2) #0  1111 1101&0000 0010==000000000

  作用:让指定位置上的数置零,或者保留某一位上的值。

  |(按位或):同0才为0

| 0 1
0 0 1
1 1 1
print(3|2) #3
print(-3|2) #-1  1111 1101 | 0000 0010==(补码)11111111=(原码)1000 0001

  ^(异或):不同为1,相同为0

^ 0 1
0 0 1
1 1 0
print(3|2) #1
print(-3|2) #-1  1111 1101 ^ 0000 0010==(补码)1111 1111=(原码)1000 0001

  ~(取反):按位取反(包括符号位)
  注意:正数取反后为负数,且负数在计算机中表现为补码,要转换为原码。

print(~5) #-6  ~0101=(补码)1010=(原码)1110
print(~-5) #4 ~1101=~(补码)1011=0100

  <<(左移):数字<<位数,将补码向左移动指定位数,后面用0补齐。

print(10<<1) #20  0000 1010<<1=0001 0100
print(-10<<1) #-20  1000 1010<<1=1111 0110(补码)<<1=1110 1100(补码)=1001 0100

  规律:m<<n==m*(2^n)

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

print(10>>1) #5  0000 1010>>1=00000101
print(-10>>1) #-20  1000 1010>>1=1111 0110(补码)>>1=1111 1011(补码)=10000101

  规律:m>>n==m//(2^n)

4.字符串(str)

   python中通过单引号和双引号引起来的字符集就是字符串,如“jskf😁j","int" "in"…………;字符串中引号中的字符串集,就是各种不同的字符来组成的。

4.1Unicode编码

  python中字符串字符采用的是Unicode编码;Unicode编码是通过两个字节来对一个字符进行编码,0~2^16-1(65536),几乎包含了世界上所有的符号。其中也包含了ASCII码表,ASCII编码:是通过一个字节来对一个字符进行编码。

a:chr(数字):获取数字在unicode编码表中对应的字符,返回只有一个字符的字符串。
b:ord(字符):获取字符对应的Unicode码。
c:可以直接在字符串中写对应的编码值,格式:\u4位的十六进制的编码值。

print(chr(0x45),chr(20))
print(ord("p"))
str1='\u45\u20'#通过编码值写字符串

转义字符(适用于所有语言)
  一些特能和具有特殊意义的字符,放在字符串引号中无用,要用\来转义,如\n换行,\t制表符,\\就是\ 。

上一篇下一篇

猜你喜欢

热点阅读