day004-位运算小常识

day004–位运算小常识

1,进制

① 常用进制有10进制(89, 23);2进制(1010, 1111);8进制(765,01014);16进制(af,013ed)。计算机直接能存储的数据只有数字;数字以二进制补码的形式存储。
② 进制之间的转换:

print(num)               # 转10进制
print(bin(num))          # 转二进制
print(oct(num))          # 转八进制
print(hex(num))          # 转16进制

2, 原码,反码,补码

① 原码 : 最高位表示符号位(0表示正、1表示负),后面是数的真值(数字的绝对值的二进制)。
10(原码): 00001010
25263(原码): 0110001010101111
-10(原码):10001010
② 反码:正数的原码、反码、补码一样;负数的反码:原码的符号位不变,其余各位取反。
10(反码):00001010
-10(反码):11110101
③ 补码;负数的反码加1。
10(补码):0 0001010
-10(补码):1 1110110

3,位运算

① 位运算: &(按位与)、|(按位或)、^(异或)、~(取反)、<<(左移)、>>(右移)
例:
1 & 1 -> 1, 1 & 0 -> 0, 0 & 0 -> 0
111 & 101 -> 101
② 位运算的运用
应用1:快速判断整数的奇偶性
所有的偶数在存储的时候最低位都是0,所有奇数在存储的时候最低位都是1
整数 & 1 -> 提取出数字在存储的时候的最低的值

num = 89
if num & 1 == 1:
    print('奇数')
else:
    print('偶数')

应用2:整数 << N --> 整数快速乘以2的N次方;
整数 >> N -> 整数快速整除(2的N次方)

print(3 << 1)      # 6
print(5 << 1)      # 10
print(-2 << 1)     # -4
print(6 >> 1)      # 3
print(5 >> 1)      # 2
print(-5 >> 1)     # -3
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值