二进制左右位移,与 & 或 | 计算

本贴最后更新于 2852 天前,其中的信息可能已经事过境迁

1.首先怎么心算快速的转换二进制?

接下来找规律比如:
1 转二进制是:1
2 转二进制是:10
4 转二进制:100
8 转二进制:1000
16 转二进制:10000
发现 2 的 n 次方有 (n+1)个数,
并且结果都为 1 和 n 个 0;

发现 2 进制的位数是这样的:512 256 128 64 32 16 8 4 2 1

接下来我们实战找一下:

84 转成二进制是:1010100
55 转成二进制是:110111
11 转成二进制是:1011

心算转二进制:

84 离 2 进制位数离谁最近?当然属 64,所以
64 的位数为 1,然后 84-64=20,20 离 16 最近,所以
32 的位数为 0,
16 的位数为 1,20-16=4,然后还剩 4,所以
8 的位数为 0,4 的位数为 1,4-4=0,没了,其他没有的补 0;
也就是 1010100

2.按左位移和右位移

按左位移(<<)找规律:
原理:转二进制后往左边移动位数,右边不够的位上补 0,左边溢出则移除
3 按左位移 1 位 3<<1 转二进制位移 11<<110=6
3 按左位移 2 位 3<<2 转二进制位移 11<<1100=12
3 按左位移 3 位 3<<3 转二进制位移 11<<11000=24
4 按左位移 1 位 4<<1 转二进制位移 100<<1000=8
4 按左位移 2 位 4<<2 转二进制位移 100<<10000=16
4 按左位移 3 位 4<<3 转二进制位移 100<<100000=32

发现规律为 m 的 n 次按左位移是 m 乘以 2 的 n 次方;

按右位移(>>)找规律:
原理:转二进制后往右边移动位数,右边超出的位移除,左边少了补 0
32 按右位移 1 位 32>>1 转二进制位移 100000>>10000=16
32 按右位移 1 位 32>>2 转二进制位移 100000>>1000=8
32 按右位移 1 位 32>>3 转二进制位移 100000>>100=4

发现规律为 m 的 n 次按右位移是 m 除以 2 的 n 次方;
(按符号右位移 >>> 不同的是左边少了补符号位,对于正数没关系,但是负数则是补 1)

3.与&和或 | 计算

按与(&)找规律:
原理:转二进制后 0 和 1 位数对比,含 0 则为 0,都是 1 才为 1
3&4 转二进制后 011&100=000 结果为 0
4&5 转二进制后 100&101=100 结果为 4
5&6 转二进制后 101&110=100 结果为 4
6&7 转二进制后 110&111=110 结果为 6

按或(|)找规律:
原理:转二进制后 0 和 1 位数对比,含 1 则为 1,都是 0 才为 0
3|4 转二进制后 011|100=111 结果为 7
4|5 转二进制后 100|101=101 结果为 5
5|6 转二进制后 101|110=111 结果为 7
6|7 转二进制后 110|111=111 结果为 7

  • Java

    Java 是一种可以撰写跨平台应用软件的面向对象的程序设计语言,是由 Sun Microsystems 公司于 1995 年 5 月推出的。Java 技术具有卓越的通用性、高效性、平台移植性和安全性。

    3201 引用 • 8216 回帖
  • 位移
    1 引用

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...

推荐标签 标签

  • Access
    1 引用 • 3 回帖 • 2 关注
  • RIP

    愿逝者安息!

    8 引用 • 92 回帖 • 400 关注
  • SendCloud

    SendCloud 由搜狐武汉研发中心孵化的项目,是致力于为开发者提供高质量的触发邮件服务的云端邮件发送平台,为开发者提供便利的 API 接口来调用服务,让邮件准确迅速到达用户收件箱并获得强大的追踪数据。

    2 引用 • 8 回帖 • 499 关注
  • Kotlin

    Kotlin 是一种在 Java 虚拟机上运行的静态类型编程语言,由 JetBrains 设计开发并开源。Kotlin 可以编译成 Java 字节码,也可以编译成 JavaScript,方便在没有 JVM 的设备上运行。在 Google I/O 2017 中,Google 宣布 Kotlin 成为 Android 官方开发语言。

    19 引用 • 33 回帖 • 74 关注
  • App

    App(应用程序,Application 的缩写)一般指手机软件。

    91 引用 • 384 回帖
  • SMTP

    SMTP(Simple Mail Transfer Protocol)即简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式。SMTP 协议属于 TCP/IP 协议簇,它帮助每台计算机在发送或中转信件时找到下一个目的地。

    4 引用 • 18 回帖 • 634 关注
  • 自由行
    2 关注
  • SVN

    SVN 是 Subversion 的简称,是一个开放源代码的版本控制系统,相较于 RCS、CVS,它采用了分支管理系统,它的设计目标就是取代 CVS。

    29 引用 • 98 回帖 • 688 关注
  • Sym

    Sym 是一款用 Java 实现的现代化社区(论坛/BBS/社交网络/博客)系统平台。

    下一代的社区系统,为未来而构建

    524 引用 • 4601 回帖 • 706 关注
  • 星云链

    星云链是一个开源公链,业内简单的将其称为区块链上的谷歌。其实它不仅仅是区块链搜索引擎,一个公链的所有功能,它基本都有,比如你可以用它来开发部署你的去中心化的 APP,你可以在上面编写智能合约,发送交易等等。3 分钟快速接入星云链 (NAS) 测试网

    3 引用 • 16 回帖
  • SOHO

    为成为自由职业者在家办公而努力吧!

    7 引用 • 55 回帖 • 4 关注
  • BAE

    百度应用引擎(Baidu App Engine)提供了 PHP、Java、Python 的执行环境,以及云存储、消息服务、云数据库等全面的云服务。它可以让开发者实现自动地部署和管理应用,并且提供动态扩容和负载均衡的运行环境,让开发者不用考虑高成本的运维工作,只需专注于业务逻辑,大大降低了开发者学习和迁移的成本。

    19 引用 • 75 回帖 • 666 关注
  • Angular

    AngularAngularJS 的新版本。

    26 引用 • 66 回帖 • 549 关注
  • PWA

    PWA(Progressive Web App)是 Google 在 2015 年提出、2016 年 6 月开始推广的项目。它结合了一系列现代 Web 技术,在网页应用中实现和原生应用相近的用户体验。

    14 引用 • 69 回帖 • 175 关注
  • CloudFoundry

    Cloud Foundry 是 VMware 推出的业界第一个开源 PaaS 云平台,它支持多种框架、语言、运行时环境、云平台及应用服务,使开发人员能够在几秒钟内进行应用程序的部署和扩展,无需担心任何基础架构的问题。

    5 引用 • 18 回帖 • 181 关注
  • Mobi.css

    Mobi.css is a lightweight, flexible CSS framework that focus on mobile.

    1 引用 • 6 回帖 • 759 关注
  • API

    应用程序编程接口(Application Programming Interface)是一些预先定义的函数,目的是提供应用程序与开发人员基于某软件或硬件得以访问一组例程的能力,而又无需访问源码,或理解内部工作机制的细节。

    79 引用 • 431 回帖 • 1 关注
  • FreeMarker

    FreeMarker 是一款好用且功能强大的 Java 模版引擎。

    23 引用 • 20 回帖 • 466 关注
  • 安全

    安全永远都不是一个小问题。

    203 引用 • 818 回帖 • 1 关注
  • 工具

    子曰:“工欲善其事,必先利其器。”

    298 引用 • 763 回帖
  • 新人

    让我们欢迎这对新人。哦,不好意思说错了,让我们欢迎这位新人!
    新手上路,请谨慎驾驶!

    52 引用 • 228 回帖
  • LaTeX

    LaTeX(音译“拉泰赫”)是一种基于 ΤΕΧ 的排版系统,由美国计算机学家莱斯利·兰伯特(Leslie Lamport)在 20 世纪 80 年代初期开发,利用这种格式,即使使用者没有排版和程序设计的知识也可以充分发挥由 TeX 所提供的强大功能,能在几天,甚至几小时内生成很多具有书籍质量的印刷品。对于生成复杂表格和数学公式,这一点表现得尤为突出。因此它非常适用于生成高印刷质量的科技和数学类文档。

    12 引用 • 54 回帖 • 8 关注
  • FFmpeg

    FFmpeg 是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序。

    23 引用 • 32 回帖
  • Spark

    Spark 是 UC Berkeley AMP lab 所开源的类 Hadoop MapReduce 的通用并行框架。Spark 拥有 Hadoop MapReduce 所具有的优点;但不同于 MapReduce 的是 Job 中间输出结果可以保存在内存中,从而不再需要读写 HDFS,因此 Spark 能更好地适用于数据挖掘与机器学习等需要迭代的 MapReduce 的算法。

    74 引用 • 46 回帖 • 563 关注
  • 知乎

    知乎是网络问答社区,连接各行各业的用户。用户分享着彼此的知识、经验和见解,为中文互联网源源不断地提供多种多样的信息。

    10 引用 • 66 回帖 • 1 关注
  • 招聘

    哪里都缺人,哪里都不缺人。

    188 引用 • 1057 回帖 • 1 关注
  • InfluxDB

    InfluxDB 是一个开源的没有外部依赖的时间序列数据库。适用于记录度量,事件及实时分析。

    2 引用 • 91 关注