找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 5000|回复: 6
打印 上一主题 下一主题
收起左侧

关于<<左移符号,有个搞不懂的地方,请大家指点一下,谢谢!

[复制链接]
楼主
ID:415459 发表于 2018-10-28 16:26 | 显示全部楼层
移位分为逻辑左移,逻辑右移以及算数右移。
1、逻辑左移
左移n位,低n位补0,视数据类型的长度截断移位之后的数据。如题主所描述的,0xfe为一个字节,用二进制表示为0b1111 1110,也就是8个比特,左移一位之后,最低位补0,数据长度为9个比特,用二进制表示为0b1 1111 1100,由于一个字节只能存储八个比特,最高位溢出,最终移位的结果为0b1111 1100。
不同于右移,左移只有逻辑移位,没有算数移位。
2、逻辑右移
数据右移,处于高位的比特会空出来,为保证数据长度一致,这就涉及到对空出来的比特位填充的问题。当始终填充0时,不考虑原始数据的最高位比特,该右移被称为逻辑右移。
例如,0b1111 1110 ->逻辑右移1位->0b0111 1111
3、算数右移
和逻辑右移填充0不同,当原始数据的最高位为1时,填充位为1,当原始数据的最高位为0时,填充位为0,也就是填充位等于原始数据的最高位。
例如,0b1111 1110 ->算数右移->0b1111 1111

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表