【图文】什么是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年5月12日
    80
  • 7年员工主动辞职HR: 本来想辞退你, 现在28万赔偿不用给你亏大了

    7年员工主动辞职HR: 本来想辞退你, 现在28万赔偿不用给你亏大了

    2022年2月13日
    46
  • 中介者模式和观察者模式的区别_序列中介作用

    中介者模式和观察者模式的区别_序列中介作用中介者模式 Mediator动机模式定义结构要点总结笔记动机在软件构建过程中,经常会出现多个多个对象相互关联交互的情况,对象之间常常会维持一种复杂的引用关系.如果遇到一些需求的更改.这种直接的引用关系将面临不断地变化这种情况下,我们可以使用一个”中介对象”来管理对象间地关联关系,避免相互交互地对象之间地紧耦合引用关系,从而更好地抵御变换模式定义用一个中介对象来封装(封装变化)一系列地对象交互中.中介者使各个对象不需要显式地相互引用(编译时依赖->运行时依赖),从而使其耦合松散(管理变化),而

    2022年8月11日
    4
  • 易语言钓鱼源码_觅风现在还做易语言吗

    易语言钓鱼源码_觅风现在还做易语言吗水平有限请轻喷.这是一个易语言写的钓鱼程序,把自己伪装成一个QQ安全中心界面.其实我也没用过易语言,但在我看来(可能是我水平不高看不出来) 病毒内部循环繁杂无章,启动较慢… 简单差了一下程序没有加壳病毒很简单没加壳,这也是我第一次分析易语言. 没有什么特别的技巧,OD载入跟

    2022年8月24日
    10
  • Java 基础练习题

    Java 基础练习题1.java类名命名规则答:1.大驼峰命名法2.不能以数字开头3.不能使用关键字,但是可以包含关键字4.数字.字母._,$5.见名知意2.java变量名(标识符)的命名规则和注意事项1.小驼峰命名法2.不能以数字开头3.不能使用关键字,但是可以包含关键字4.数字.字母._,$5.见名知意注意事项:1.相同作用域中不允许重复定义2.变量未经初始化,不允许使用3.一条语句可以定义多个相同类型的变量3.求成绩占总成绩的百分比doublescore=90;double

    2022年7月7日
    18
  • img图片加载出错处理[通俗易懂]

    img图片加载出错处理[通俗易懂]为了美观当网页图片不存在时不显示叉叉图片当在页面显示的时候,万一图片被移动了位置或者丢失的话,将会在页面显示一个带X的图片,很是影响用户的体验。即使使用alt属性给出了”图片XX”的提示信息,也起不了多大作用。其实,可以这样处理:当图片不存在的时候,会触发onerror事件,我们可以在该事件中做一下补救的工作,比如:1、让这个图片元素隐藏:imgsrc=”图片的url地址”

    2022年7月26日
    33

发表回复

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

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