【图文】什么是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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • QinQ、VLAN Mapping原理和配置「建议收藏」

    QinQ、VLAN Mapping原理和配置「建议收藏」我唯一知道的就是我一无所知。—苏格拉底文章目录一、QinQ基本原理二、VLANMapping基本原理三、拓扑四、配置与分析五、总结一、QinQ基本原理QinQ是指在802.1QVLAN的基础上增加一层802.1QVLAN标签,从而拓展VLAN的使用空间。在公网的传输过程中,设备只根据外层VLANTag转发报文,并根据报文的外层VLANTag进行MAC地址学习,而用户的私网VLANTag将被当作报文的数据部分进行传输。1、QinQ报文封装格式QinQ报文有.

    2022年8月10日
    4
  • HTML/CSS 常见面试题汇总

    HTML/CSS 常见面试题汇总HTML面试题1、<image>标签上title属性与alt属性的区别是什么?alt属性是为了给那些不能看到你文档中图像的浏览者提供文字说明的。且长度必须少于100个英文字符或者用户必须保证替换文字尽可能的短。这包括那些使用本来就不支持图像显示或者图像显示被关闭的浏览器的用户,视觉障碍的用户和使用屏幕阅读器的用户等。title属性为设置该属性的元素提供建议性的信息。使用ti…

    2022年5月31日
    30
  • mybatis拦截器详解_mybatis过滤器

    mybatis拦截器详解_mybatis过滤器原文https://blog.csdn.net/weixin_39494923/article/details/91534658一.背景在很多业务场景下我们需要去拦截sql,达到不入侵原有代码业务处理一些东西,比如:分页操作,数据权限过滤操作,SQL执行时间性能监控等等,这里我们就可以用到Mybatis的拦截器Interceptor二.Mybatis核心对象介绍从MyBatis代码实现的角度来看,MyBatis的主要的核心部件有以下几个:Configuration初始化基础配置,比如MyBat

    2022年9月9日
    0
  • 手机QQ浏览器属于代理服务器吗?

    手机QQ浏览器属于代理服务器吗?

    2021年10月23日
    46
  • ATM(异步传输模式)是什么?

    ATM(异步传输模式)是什么?异步传输模式(ATM)也称为信元中继(在固定大小的信元中传输数据),通过光纤或双绞线电缆(高速交换)在OSI模型的数据链路层(第2层)运行基于ITU-T宽带综合业务数字网络(B-ISDN)标准的网络技术,该标准是电信业开发的自动取款机可以同时传输各种流量:语音、视频和数据,速度高达每秒155兆比特。它将语音和视频数据转换成数据包,并通过相同的介质传输大数据包数据。自动取款机和TCP。由于两个端点之间使用固定通道路由协议路由,所以/IP是不同的。实时低延迟应用程序,如VoIP和视频,在ATM网络上..

    2022年9月21日
    0
  • 用java打印空心菱形_java打印空心直角三角形

    用java打印空心菱形_java打印空心直角三角形打印菱形尤其是空心菱形对于初学者来说有一定难度,熟练掌握了for循环后,还是可以打印出来的分析:1.先打印上半部分,再打印下半部分      2.找准空格与星号之间的关系,然后再打印      3.上半部分每一行数目分别为1、3、5、7、9、7、5、3、1      4.找准关系2*i-1     //练习二:打印菱形与空心菱…

    2022年9月29日
    0

发表回复

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

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