day4-循环关键字和位运算

day4-循环关键字和位运算

循环关键字

1.continue

continue是关键字,只能用在循环体中

当执行循环体的时候,如果遇到continue,当次循环直接结束,马上进入下一个循环的判断(遇到continue结束一次循环)

for x in range(3):
    print('======')
    continue
    print('++++++')
    print('------')

2.break

break是关键字,只能在循环体中使用

当执行循环体的时候,如果遇到break,整个循环直接结束

for x in range(4):
    print('&&&&&&&')
    break
    print('+++++++')
    print('-------')

3.while循环和break一起使用

while True:
需要重复的操作
if 循环结束的条件:
break

# 用while计算1+2+3+...+100
sum1 = 0
num = 1
while True:
    sum1 += num
    num += 1
    if num > 100:
        break
print(sum1)

4.else

(1)python中完整的for

for 变量 in 序列:
    循环体
else:
    代码段

(2)python中完整的while

while 条件语句:
    循环体
else:
    代码段

在for循环或者while循环后面加else结构不会影响原循环的执行

如果循环是正常结束的,循环结束后会执行else后面的代码段;如果循环是因为break而结束,那么else后面的代码段就不会执行

(可以根据else后面的代码是否执行来判断循环在执行过程中有没有遇到break)

for x in range(4):
    print('=====')
    break
else:
    print('end!')

进制

计算机存储数据只是存储二进制数据(计算机只有存储数字的能力,并且存的是这个数字二进制补码)

十进制

基数:0,1,2,3,4,5,6,7,8,9  (789, 1297, 104)
进位:逢10进1   (8+2 -> 10, 9+5 -> 14)
位权:10的N次方(N从0开始)  2341 -> 1*10**0 + 4*10**1 + 3*10**2 + 2*10**3
程序中的表示方式:直接写

二进制

基数:0,1   (001, 110, 11011)
进位:逢2进1     100 + 110  -> 
位权:2的N次方 (N从0开始)   101011 -> 1*2**0+1*2**1+0*2**2+1*2**3+0*2**4+1*2**5 = 1+2+8+32=43
程序中的表示方式:加前缀0b/0B

八进制

基数:0,1,2,3,4,5,6,7      (123, 456,14567)
进位:逢8进1
位权:8的N次方 (N从0开始)  123 -> 3*8**0+2*8**1+1*8**2 = 3+16+64=83
程序中的表示方式:加前缀0o/0O
"""

十六进制

基数:0~9,a/A(10)~f/F(15)    (af, 10ee, abcd, FFB6C1)
进位:逢16进1   
位权:16的N次方 (N从0开始)   af -> f*16**0 + a*16**1 = 15*1 + 10*16 = 175
程序中的表示方式:加前缀0x/0X

进制转换

其他进制转10进制:技术乘以位权的和

# 方法:print
# 0b1011 ->  2**0 + 2**1 + 2**3 = 11
# 0o56 ->  6*8**0 + 5*8**1 = 6 + 40 = 46
# 0x12f -> 15*16**0 + 2*16**1 + 1*16**2 = 15+32+256 = 303

10进制转其他进制(辗转取余法)

# 转二进制方法:bin - 将其他进制转二进制
# 转八进制方法:oct
# 转16进制方法:hex

原码,反码和补码

正数的原码,反码和补码一样

(1)原码:符号位+真值

真值:数字绝对值的二进制

符号位:0表示正,1表示非

10的真值:1010, -10的真值:1010

10的原码:01010, -10的原码:11010

(2)反码 - 符号位不变,其他位取反

-10的反码(1字节):11110101

(3)补码 - 反码加1

-10的补码:11110110

# 内存最小单位是位(bit)
# 1字节 = 8位 (内存开辟的最小单位是字节)
# 1kb = 1024字节
# 1Mb = 1024kb
# 1G = 1024MK
# 1T = 1024G
# 计算:2 - 3
# 2的原码: 00000010
# 2的补码: 00000010
# -3的原码: 10000011
# -3的补码:11111101
# 原码计算:00000010 + 10000011  = 10000101 -> -5
# 补码计算:00000010 + 11111101  =  11111111(补码) -> 11111110(反) ->10000001 -> -1

位运算

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

位运算的特点:运算效率高,内存消耗少;但是完成复杂运算的时候难度高

(1)快速判断数字的奇偶性:数字 & 1

print(10 & 1)
print(102 & 1)
print(228 & 1)
print(15 & 1)
print(21 & 1)
print(17 & 1)

(2)快速乘2操作:数字 << 1

print(3 << 1)
print(12 << 1)
print(-5 << 1)

(3)快速整除2操作:数字 >> 1

print(4 >> 1)
print(6 >> 1)
print(9 >> 1)    # 4
print(-9 >> 1)   # -5
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值