python---进制转换、运算符和优先级、原码、补码

进制

常见进制有:二进制(0b),八进制(0o),十进制(0d),十六进制(0x)

  • 十进制逢十进一;十六进制逢十六进一;二进制逢二进一
  • 转为十进制:按位乘以权累加求和
    例:
    二进制(0b):8 4 2 1 原则;
    即0b1111转换为十进制:8+4+2+1=15 也可以理解为 1 * 2 *3 + 1 2 ** 2 + 1 * 2 ** 1 + 1 * 2 ** 0=15
    十六进制(0x)
    0x7F转换为十进制计算为 7 * 16 + 15*1 =127
    八进制(0o)
    0o111=1 * 8 ** 2 + 8 ** 1 + 1=73
  • 转换为二进制
    例:
    十六进制(0x):按位展开即可
    0x7F转换为二进制为:7即为0111,F即为1111;所以0x7F=0111111
    0111111等于1 bytes即1个字节=8位,1个位只能表示0、11
    十进制:除以基数2,直到商为0为止,反向提取余数
    python---进制转换、运算符和优先级、原码、补码_第1张图片
    即:127=1111111
    十六进制(0x):除以基数16,直到商为0为止,反向提取余数

    即 127 = 0x7F

运算符

  • 算数运算符 : + - * / % ** //

    // 整除;5 // 2 = 2;
    % 模:5 % 2 = 1 ;与2模,可以用来判断奇偶数,如果结果为1则为奇数,为0则为偶数
    扩展:divmod(5, 3) = (1, 2);返回的数据类型为元祖,指1代表5,3的商,2代表5,3的余数
    ** 平方; 5 ** 2 = 25;即5的平方;开方:5 ** 0.5

  • 位运算符: & | ~ ^ << >>
    & 位与,按位相与;转换成二进制,对位相乘。
    9 & 1 = 1,可以用来判断奇偶数,如果结果为1则为奇数,为0,则为偶数
    | 位或,按位相或;转换成二进制,对位相加。
    9 | 8 = 9,二进制状态下相加,1+0=1;0+0=0;1+1=1
    << >>移位运算
    8 >> 2 = 2;二进制状态下向右移三次。右移在做除法
    1 << 2 = 4;二进制状态下向左移三次。左移在做乘法
    ^ 异或
    9 ^ 8 = 1 ;二进制状态下,相异除1,相同除0。
    ~ 按位取反
    ~12 = - 13
    1 == 2 ;1是否等于2,返回值为bool型,即True,False。
    1 != 2 ;1是否不等于2,返回值为bool型,即True,False。
    假设b =5
    10 > b and b > 3 当乘法看 1 * 1 = 1 ,短路原则,如果第一位False,则后面不计算。
    b > 10 or b > 3 当加法看 0 + 1 = 1
    not b > 10 取反,等价于 b =< 10
    b += 1 #b = b + 1 ;赋值语句,赋值及重新定义
    a = min(3,5) 返回值为3;即取最小值
    a = max(3,5) 返回值为5;即取最大值

原码、反码、补码

正数的原码、补码、反码相同
负数的反码,以原码的符号位不变,其余为按位取反
补码以原码的符号位不变,其余为按位取反后+1
补码在补码就是负数的原码
例:10 ^ -9
00001010 10的原、补
10001001 -9的原

11110111 -9的补
00001010 10的补
11111101 异或的补

10000011 异或的原 -3

运算符优先级

python---进制转换、运算符和优先级、原码、补码_第2张图片

  • 算数运算符 > 位运算符 > 身份运算符 > 成员运算符 > 逻辑运算符
  • 单目 > 双目
  • 记不住,用括号
  • 长表达式,多用括号,易懂,易读

你可能感兴趣的:(python---进制转换、运算符和优先级、原码、补码)