Day 4 —位运算
补充知识:
计算机直接能存储的数据只有数字;数字以二进制补码的形式存储。
-
进制
- 十进制:逢十进一。
89,152,45...
- 二进制:逢二进一。
10110,11111,10001...
- 八进制:逢八进一。
765,25246...
- 十六进制:逢十六进一
0-9,A-F/a-f
。AF,013BE...
- 十进制:逢十进一。
-
前缀
- 十进制:无
- 二进制:
0b
。0b110110 - 八进制:
0o
。0o674 - 十六进制:
0x。
0xff00
-
转进制
-
转成十进制:在
python
中用print()自动转化print(number)
。 -
转成二进制:
print(bin(number))
。 -
转成八进制:
print(oct(number))
。 -
转成十六进制:
print(hex(number))
。
-
-
原码、反码、补码
-
原码:最高位表示符号位,后面是数的真值(数字的绝对值的二进制)。
-
反码:正数:原码、反码、补码都一样;
负数:符号位不变,其他位取反。
-
补码:正数:与原码一样;
负数:反码加1。
-
-
位运算:
&
按位与、|
按位或、^
异或、~
取反、<<
左移、>>
右移-
应用1:快速判断整数的奇偶性。
所有的偶数在存储的时候最低位都是0,所有的奇数在存储的时候最低位都是1。
整数 & 1 -> 提取出数字在存储的时候的最低位
-
应用2:快速乘2、除以2
整数 << N
左移N位 :乘2的N次方整数 >> N
右移N位:整除2的N次方
-
#判断奇偶性
num = 89
if num & 1 == 1:
print('奇数')
else:
print('偶数')