为什么算术左移和逻辑左移一样

(1)负数的逻辑左移,明显符号位被移走了,1变成0了呀,负数不就变成正数了吗?为何能和算术左移一样呢?

为了解答这个问题,需要了解在计算机中所有的符号数都是按照补码存储的,最高位为符号位(0:整数 1:负数),所谓的补码:原码取反+1 构成

例如:8符号整形 -1 的补码 (源码)1000 0001  (补码)1111 1111

                            -64 的补码  (源码)1100 0000    (补码)1100 0000

                         -127 的补码  (源码)1111 1111    (补码)1000 0001

其实左移一位相当于数乘以2之后的结果,现在假设有符号数占8位,表示负数范围为 -1 ~ -128,如果当前被左移数是(-1~-64),在乘以2之后都是处于合法范围,而处于这个范围的数字的补码的第二位都是1,因此不需要考虑算术右移的符号位

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值