美文网首页
day3_进制与字符串

day3_进制与字符串

作者: 逆流而上_2eb6 | 来源:发表于2018-09-27 16:57 被阅读0次

    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制表符,\\就是\ 。

    相关文章

      网友评论

          本文标题:day3_进制与字符串

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