左移位右移位
结论
:(针对于整数?正数?)左移一位相当于✖️2,右移一位相当于➗2(即 // 2 除2后向下取整)
下文以移动2位段为例子进行论证:
- | 左移 | 右移 |
---|---|---|
符号 | << | >> |
对于正数 | 高位丢失,低位补0 | 低位丢失,高位补0 |
对于负数 | 高位丢失,低位补0 | 低位丢失,高位补1 |
原码、补码、反码
原码
:将值转换为相对于的二进制形式
补码/反码
是对原码进行某种转换编码方式
符号位
:1表示正,0表示负,原码最高位为符号位
- | 正整数 | 负数 |
---|---|---|
原码 | - | - |
反码 | 同原码 | 原码除符号位外其他位进行取反操作 |
补码 | 同原码 | 反码末尾+1 |
⚠️计算机使用补码进行运算
由于计算机内只有加法器,没有减法器,在计算减法运算时,需要通过转换成加上“减数相反数”的形式,因此引入了补码运算
列子:16-8 = 16+(-8)
在计算机中,以补码运算,需要把16的补码与-8的补码相加…,如下图:
进制转换
十进制转二进制
不断除以2...直到为0,然后倒序记录
如下:
二进制转十进制
通用公式如下:
abcd.efg(二进制)=d*2^0+c*2^1+b*2^2+a*2^3+e*2^-1+f*2^-2+g*2^-3(十进制)
如下所示:
运用
求奇偶
a=2
b=3
if (a&1):
print("是奇数")
原理:
可知奇数转为二进制,最后一位一定是1, 这时候奇数再与1进行与运算,最后一位与运算的结果一定是1,又如前面可是,二进制最后一位是1的,才是奇数。所以可以通过与运算求奇偶