移位操作(逻辑位移,算术位移)

本文介绍了计算机中的两种移位操作——逻辑移位和算术移位。逻辑移位简单地用0填充空位,而算术移位则根据数据类型和正负值来决定填充0或1,对于有符号负数,右移时会补1以保持符号位。理解这两种移位在编程中至关重要。
摘要由CSDN通过智能技术生成

有算术移位和逻辑移位。

一、逻辑移位是傻瓜式的,全部补0。

二、算术移位考虑是那种数据类型和正负值两个因素:

1、若是无符号数,不管左移还是右边移动,都补0;

2、若是有符号的正数,不管左移还是右移,都补0;

3、若是有符号的负数,左移补0,右边移补1。

算术位、逻辑移位和循环位是计算机中常用的位移操作。它们的区别在于对于位后的空缺位的填充方式不同。 1. 算术位:算术位是指在位时,保留符号位,位后空缺的位用符号位来填充。例如,对于二进制数1011,进行算术一位,得到1101,左一位,得到0110。 2. 逻辑移位逻辑移位是指在位时,空缺的位用0来填充。例如,对于二进制数1011,进行逻辑一位,得到0101,左一位,得到1010。 3. 循环位:循环位是指将二进制数的所有位进行循环位,即位后,最高位的数值会动到最低位,其他位也按照相同的规则进行位。循环位分为带进位和不带进位两种方式。带进位的循环位是指在位时,最高位的数值会动到最低位,并且会影响到进位位,其他位也按照相同的规则进行位。不带进位的循环位是指在位时,最高位的数值会动到最低位,其他位也按照相同的规则进行位,进位位不受影响。 下面是三种位操作的示例: 1. 算术位 ```python # 算术 a = 0b1011 b = a >> 1 print(bin(b)) # 输出:-0b101 # 算术 a = 0b1011 b = a << 1 print(bin(b)) # 输出:0b10110 ``` 2. 逻辑移位 ```python # 逻辑 a = 0b1011 b = a >> 1 print(bin(b)) # 输出:0b101 # 逻辑 a = 0b1011 b = a << 1 print(bin(b)) # 输出:0b10110 ``` 3. 循环位 ```python # 带进位的循环右 a = 0b1011 b = (a >> 1) | (a << (4 - 1)) print(bin(b)) # 输出:0b1101 # 不带进位的循环右 a = 0b1011 b = (a >> 1) | (a << (4 - 1)) & 0b1111 print(bin(b)) # 输出:0b1101 # 带进位的循环左 a = 0b1011 b = (a << 1) | (a >> (4 - 1)) print(bin(b)) # 输出:0b0111 # 不带进位的循环左 a = 0b1011 b = (a << 1) | (a >> (4 - 1)) & 0b1111 print(bin(b)) # 输出:0b0111 ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值