Day7 作业总结以及位运算

2019-01-02  本文已影响0人  ChiAo1fei

作业总结

  1. 数值交换

    a = 12
    b = 13
    a,b = b,a
    print(a,b)
    
  2. 判断列表元素的类型

    isinstance(数据,类型)

    sum = 0
    list1 = [20, 'abc', [1,2], 12.5, '123']
    for num in list1:
        if isinstance(num, int) or isinstance(num, float):
            sum += num
    print(sum)
    

进制

在计算机编程中,整数可以通过十进制,二进制,八进制和十六进制来表示

  1. 十进制

    基数:0,1,2,3,4,5,6,7,8,9
    进位:逢十进一
    位权:123 = 100 + 20 + 3
    
  2. 二进制

    基数:0,1
    进位:逢二进一
    100(2) = 4(100)
    位权:101(2) = 1 * 2 ** 0 + 0 * 2 ** 1 + 1 * 2 ** 2
    
  3. 八进制

    基数:0,1,2,3,4,5,6,7
    进位:逢8进1
    位权:123(8) = 3 * 8 ** 0 + 2 * 8 ** 1 + 1 * 8 ** 2
    
  4. 十六进制

    基数:0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F
    进位:逢16进1
    位权:123(16) = 3 * 16 ** 0 + 2 * 16 ** 1 + 1 * 16 **2
    
  5. 程序中表示不同进制的数

    • 在程序中直接写的数字是10进制
      num1 = 110      # 这是一个十进制
      print(num1)
      
    • 0b+二进制
      num1 = 0b1101
      print(num1)
      print(bin(num1),type(bin(num1)))
      
    • 0o+八进制
      num1 = 0o1234567
      print(num1)
      print(oct(num1))
      
    • 0x+十六进制
      num1 = 0xffff
      print(num1)
      print(hex(num1))
      

位运算

计算机存储数据只能存储数字数据,而且存的是数字的补码。
计算机对数据进行运算的时候是使用补码进行运算的,将数据偶从计算机中读取出来看到的是原码

  1. 原码

    符号位+真值

    说明:0 - 正;1 - 负

    最高位为符号位

    真值:去掉符号位后数字的二进制表示

  2. 反码

    负数的反码:原码的符号位不变,其他位取反

    整数的反码:就是原码

  3. 补码

    正数的补码是原码

    负数的原码是反码加1

  4. 位运算:

    &(按位于),|(按位或),~(按位取反),^(按位异或),>>(右移),<<(左移)

    • 数字1 & 数字2 -> 每一位上的数都为1结果就是1,有0就是0
      0111(补码) & 1101(补码) --> 0101(补码)
      特点:一个位上的数和1与,可以保留这个位上的数;和0与可以置0
      应用:判断一个数的奇偶性 
              如果一个数的二进制的最低位是1就是奇数
              num & 1 == 1 奇数
              num & 1 == 0 偶数
      
    • 数字1 | 数字2:
      1 | 1 = 1
      1 | 0 = 1
      0 | 1 = 1
      0 | 0 = 0
      特点:置1
      
    • ~数字1 : 将数字上的每一位取反
      ~1 = 0
      ~0 = 1
      
    • 数字1 ^ 数字2 :相同为0,不同为1
      
      1 ^ 1 = 0
      0 ^ 0 = 0
      1 ^ 0 = 1
      0 ^ 1 = 1
      应用:加密,判断两个数是否相等
      
    • 数字1 << N  :数字1左移N位,结果为 数字1 * 2 ** N
      数字1 >> N  :数字1右移N位,结果为 数字1 // 2 ** N
      应用:快速的进行乘2的幂函数或者除2的幂函数
      
上一篇 下一篇

猜你喜欢

热点阅读