开发者社区> 问答> 正文

C语言的位运算,左移右移的问题

怎么理解左移一位等于乘2,右移一位等于除以2?

展开
收起
a123456678 2016-03-09 18:13:50 3199 0
1 条回答
写回答
取消 提交回答
  • 如果要理解二进制的位移,可以以十进制的位移作类比:123左移变成1230就是乘以10,右移变成12就是除以10。二进制的话,把10改成2就是了。

    需要形式化的表示的话,对于k进制的数abc为例:

    abc = a (k^2) + b (k^1) + c (k^0)
    abc/k可以表示为:

    abc/k = a (k^2) / k + b (k^1) / k + c (k^0) / k

      = a * (k^1) + b * (k^0) + 0
      = ab

    其中/代表整除,^代表乘方。左移类似。

    2019-07-17 18:56:28
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载