【图文】什么是php位运算与二进制[通俗易懂]

【图文】什么是php位运算与二进制

大家好,又见面了,我是全栈君。

 ☼  二进制

 

    二进制就是用0和1来表示计算机语言的,0,1可以表示任意数,其逢二进一。

☼ 将十进制(即阿拉伯数字)转成二进制的计算步骤

【图文】什么是php位运算与二进制[通俗易懂]

二进制有三个重要概念   【图文】什么是php位运算与二进制[通俗易懂]【图文】什么是php位运算与二进制[通俗易懂]

▶位运算              【图文】什么是php位运算与二进制[通俗易懂]

位运算符运算规则:

  •  按位与&:两位全为1,结果为1

  •  按位或|:两位有一个为1,结果为1

  •  按位异或^:两位中一个为0,一个为1,结果为1

  •  按位取反~:0取1,1取0

根据规则, 计算一个数的步骤:

例如计算:~2=?

 1.找出2的补码,【因为计算机运算是以补码的方式来进行运算的】
   2的原码:00000000 00000000 00000000 00000010
  //上面的字串从左往右数第一个数为0,所以其为正数,而正数有个原则:正数的原码=反码=补码,所以2的补码就是上面这串数字
2.再取反
  ~2取反:11111111 11111111 11111111 11111101
   //上面的字串得到的是补码,要想获得我们想要的结果就要将补码-->反码-->原码
 3.补码-->反码  [(补码-1)就是反码]
    反码:11111111 11111111 11111111 11111100
 4.反码-->原码  [符号位不变,也就是上面的字串从左往右数第一个数不变]
   原码:10000000 00000000 00000000 00000011=1*2^0+1*2^1=1+2=-3  //前面的红色1表示负数,所以结果为-3
/^表示次方,2^0表示2的0次方,从右往左开始计算:即1(上面这串数字从右往左数的第一个1)*2^0+1(上面这串数字从右往左数的第二个1)*2^1

例如:2&3=?

 1.找到2和3的补码
  2的补码: 00000000 00000000 00000000 00000010
  3的补码: 00000000 00000000 00000000 00000011
 //按位与&的运算:两位都为1,结果为1
  2&3= 00000000 00000000 00000000 00000010  // 前面的字串为补码,由于其第一个数字为0,所以其为正数,正数的补码=原码,所以结果为2  

终上:计算一个数的步骤就是原码–>反码–>补码–>根据位运算符计算得到补码–>反码–>原码–>再得到我们想要的值

▶ 位移运算

在php中位移运算符有两种:>>(右移)和<<(左移)

 运算的规则:

右移:低位溢出,符号位不变,并用符号位补溢出的高位   [通俗点就是将最右边的数溢出,用最左边的数(符号数)补溢出的个数,放在最左边]

左移:符号位不变,低位补0    [通俗点就是将最左边的数溢出,用0来补溢出的个数,放在最右边]

根据规则,下面写几个案例:

 A. $a=1>>2;//将1向右移动两位

 1.找出1的补码
   00000000 00000000 00000000 00000001
 1>>2
   00000000 00000000 00000000 00000000
 $a=1>>2=0

B. $a=1<<2;//将1向左移动两位

  00000000 00000000 00000000 00000001
1<<2
  00000000 00000000 00000000 00000100
$a=1<<2=4

 【图文】什么是php位运算与二进制[通俗易懂]

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/111452.html原文链接:https://javaforall.net

(0)
上一篇 2022年2月20日 下午12:00
下一篇 2022年2月20日 下午1:00


相关推荐

  • 深夜突袭!万亿参数MoE模型Kimi K2上线即开源,月之暗面能否重归C位?

    深夜突袭!万亿参数MoE模型Kimi K2上线即开源,月之暗面能否重归C位?

    2026年3月12日
    1
  • 快速提升网站排名_使用快排优化的方法「建议收藏」

      确定自己网站适不适合做快排  好多小伙伴想为自己网站做一做快排,但是又不知道自己网站适不适合,首先,大家都知道选好关键词的重要性,想实现投入和产出的最大化,建设网站前选好合适的关键词是非常必要的。找到网站合适的关键词,根据难度将关键词进行分类,布局对应的页面,核心关键词布局到首页,常用关键词分布列表页或栏目页,长尾关键词则主要出现在内容页。良好的网站结构是这整个网站构建的核心体系。一个良好的网站框架能让排名效果事半功倍,想要被搜索引擎快速收录的前提是可以让蜘蛛排名与抓取,而蜘蛛喜欢得是目录层次简单

    2022年4月15日
    53
  • MySQL入门:如何创建数据库?

    MySQL入门:如何创建数据库?本文详细概述了如何使用不同的方法和工具 包括用于 MySQL 的命令行 工作台和 dbForgeStudi 在 MySQL 中创建数据库 MySQL 是基于 SQL 的关系数据库管理系统 它是由 OracleCorpor 开发 分发和支持的 MySQL 是免费的开源软件 由于其可靠性 兼容性 成本效益和全面的支持 它正越来越受到欢迎 MySQL 有一个分支 MariaDB 由 MySQL 的原始开发人员制造 MariaDB 具有相同的数据库结构和索引 因此可以代替 MySQL MySQL 和 MariaDB 都支持

    2026年3月18日
    2
  • 两位数乘法速算(无意中发现)

    两位数乘法速算(无意中发现)比如目前计算12*34=?现在拿ab*cd=?举例子步骤:就是b*d的个位数放在?的个位上。。。。。。。。。。。。。。。。。①然后如果bd有十位那么先记下来(心里默记)。。。。。。。。。。。②然后计算bc+a*d+②结果得到的个位数写在①前面。。。。。。。。③然后把上一步剩下的结果除了个位数以后的保留下来。。。。。。。。。④然后…

    2022年6月7日
    35
  • Mssql常用经典SQL语句大全完整版–详解+实例

    Mssql常用经典SQL语句大全完整版–详解+实例下列语句部分是Mssql语句,不可以在access中使用。  SQL分类:  DDL—数据定义语言(CREATE,ALTER,DROP,DECLARE)  DML—数据操纵语言(SELECT,DELETE,UPDATE,INSERT)  DCL—数据控制语言(GRANT,REVOKE,COMMIT,ROLLBACK)  首先,简要介绍基础语句:  1、说明:创建数据库C

    2022年5月18日
    39
  • Linux下的文件IO编程[通俗易懂]

    Linux下的文件IO编程[通俗易懂]Linux中处处皆文件,可以通过终端命令来对文件进行操作,也可以通过编程语言(程序)来对文件进行操作。而在C语言中可以通过标准IO和文件IO对文件进行操作,上一篇文章描述了标准IO,这篇文章当然是关于文件IO的基本操作,同时给予了详细的例程和标准IO进行对比。

    2022年4月30日
    54

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号