2021.1.22-day4位运算

1.知识回顾:

# 1.if多分支结构
if 条件语句1:
    代码段1
elif 条件语句2:
    代码段2
elif 条件语句3:
    代码段3
...
else:
    代码段N
# 2.if嵌套
num = 8
if num % 2 == 0:
    print('偶数')
    if num % 4 == 0:
        print('4的倍数')
else:
    print('奇数')
# 3.for循环
"""
for 变量 in  序列:
    循环体
else:
    代码段

"""
# 4.range函数
"""
range(N)  - 0 ~ N-1
range(M, N) -   M ~ N-1
range(M, N, step)
"""
# 5.while循环
"""
while 条件语句:
    循环体
else:
    代码段
"""
# 6.循环关键字
# continue:结束本次循环
# break:结束整个循环
# else:
"""
while True:
    写清楚需要重复执行操作
    if 循环结束的条件:
        break
"""

2.位运算:

# 计算机直接能存储的数据只有数字;数字以二进制补码的形式存储。
# rgb值:通过对红(R)、绿(G)、蓝(B)三个颜色通道的变化以及它们相互之间的叠加来得到各式各样的颜色的;通常情况下,RGB各有256级亮度,用数字表示为从0、1、2...直到255

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HnAlrfH0-1611575146331)(C:\Users\亲爱的🐖\AppData\Roaming\Typora\typora-user-images\image-20210123142101104.png)]

2.1进制

# 10 进制:89, 23,995  —— (每一位上的数字都在0~9)
# 2 进制:0b1010,0b1111(每一位上的数只能在0~1取) ——(前缀用0b与十进制区分)
# 8进制:0o765,0o01014(0~7)(用0o与十进制区分)
# 16进制: 0x(0~9,a~f/A~F表示10~15)(前缀0x与十进制区分)
 # 转10进制-直接打印
num1 = 89		
num2 = 0b1010  # 1*(2**3)+0*(2**2)+1*(2**1)+0*(2**0)==10
num3 = 0o67		# (6*(8)+7) == 55
num4 = 0xff00	# (15*(16**3)+15*(16**2)) == 65280
print(num1,num2, num3, num4)

# 89 10 55 65280

# bin() - 转二进制
print(bin(89))    # 0b1011001
print(bin(0o45))  # 0b100101    ???16进制转2进制的方法
# 0ct()——转八进制、hex()——转16进制

2.2 原码、反码、补码


# 1)原码 : 是一种计算机中对数字的二进制定点表示方法。原码表示法在数值前面增加了一位符号位(即最高位为符号位):正数该位为0,负数该位为1(0有两种表示:+0和-0),其余位表示数值的大小。
# 10(原码):  0 0001010、 0 0000000 000000000 00000000 00001010
# 25263(原码):  0 110001010101111
# -10(原码):1 0001010、1 0000000 000000000 00000000 00001010
# 2)正数的原码、反码、补码一样的
# 反码:原码的符号位不变,其余各位取反
# 10(反码):0 0001010
# -10(反码):1 1110101
# 3)补码
# 反码加1  (0+0==0, 0+1==1, 1+0==1, 1+1==0,进1位)
# 110 + 111 == 1101; 101 + 100110 ==101011
# 10(补码):0 0001010
# -10(补码):1 1110110  

3.位运算: &(按位与)、|(按位或)、^(异或)、~(取反)、<<(左移)、>>(右移)

&:只要对应的二个二进位都为1时,结果位就为1
# 1 & 1 -> 1, 1 & 0 -> 0, 0 & 0 -> 0
# 111 & 101  -> 0b1101111&0b1100101->ob1100101->101
print(5 & 2)  -> 0b101&0b10->000->0
# 101 & 010 -> 000 -> 0
应用1:快速判断整数的奇偶性 !!!!
    num = 89
    if num & 1 == 1:
        print('奇数')
    else:
        print('偶数')
# 所有的偶数在存储的时候最低位都是0,所有奇数在存储的时候最低位都是1
# 整数 & 1  -> 提取出数字在存储的时候的最低的值   

 <<左移:
应用:整数 << N  -> 整数快速乘以(2的N次方)
print(3 << 1)   # 6
print(5 << 2)   # 20
print(-2 << 3)  # -16

>>右移:
# 整数 >> N  -> 整数快速整除(2的N次方)
print(6 >> 1)   # 3
print(5 >> 1)   # 2
print(-5 >> 1)  # -3   -5 // 2 ->-2.5 -> -3

< 2) # 20
print(-2 << 3) # -16

右移:

整数 >> N -> 整数快速整除(2的N次方)

print(6 >> 1) # 3
print(5 >> 1) # 2
print(-5 >> 1) # -3 -5 // 2 ->-2.5 -> -3


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值