c语言中左移与右移操作

    在C语言中,左移是逻辑/算术左移(两者完全相同),右移是算术右移,会保持符号位不变。


  这样做的目的主要是在编程时,用左/右移做快速的乘/除运算,避免做多次乘除运算时所花费的时间。

  1、左移<<:转为二进制(补码)后,将数的整体向左移动,丢弃高位,用0补低位,从而实现2^n倍的乘法操作。

  2、右移>>:转为二进制(补码)后,将数的整体向右移动,最高位的符号位不变,丢弃低位,从而实现除以2^n的除法操作。


  假如计算中遇到超过当前二进制数总位数的情况,默认会求移位数与位数的余数,将其作为实际的移动位数。


  此外,我们常常说的计算机字长指的是CPU通用寄存器的数据处理长度,也就是广告中提及的64位CPU,它是指单位时间内能被处理的数据长度,与决定CPU寻址范围的位数并不等同。

  

  比如Intel80286CPU的数据总线数为16位,而地址总线是24位,其寻址范围是2^24=16Mb。


  所谓32位CPU不支持大于4G的内存,主要指的是其地址寄存器是32位,最大的寻址范围是2^32=4096Mb。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值