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


相关推荐

  • 101道算法javaScript描述【一】

    101道算法javaScript描述【一】数据结构与算法是计算机专业必修课,但是对于前端工程师来说,沉浸在业务代码之中很少会和算法直接打交道,甚于说根本不需要用到什么算法。那么我们为什么要学习算法,意义何在?不会算法活不是一样能干。把一件事情做到极致是非常必要的职业心态,这离不开数据结构和算法。另一方面,再说面试,这和在学生时代为什么要学数理化是一个道理,考试要考,你就要学。面试造火箭,工作拧螺丝,面试官通过问几道算法题了解你的编程和逻辑思维能力并不奇怪。万丈高楼平地起,基础知识掌握多少,一定程度上决定了我们的技术能走多远。想要作出一点事情,基础一

    2022年10月5日
    0
  • 创建索引sql 语句「建议收藏」

    创建索引sql 语句「建议收藏」1、创建表的同时指定createtablet1( idintnotnull, namechar(30)notnull, uniqueindexUniqIdx(id))2、在已经存在的表创建索引使用ALTERTABLE语句创建索引1.执行语句altertablebookaddindexBkName(bookname(30))2…

    2022年9月7日
    1
  • 【HTML响应式项目】成人教育官网前端页面(HTML+CSS+JS实现三端适应)

    【HTML响应式项目】成人教育官网前端页面(HTML+CSS+JS实现三端适应)项目源码已上传至码云仓库:云南农业职业技术学院/HTML响应式成人教育官网前端页面(HTML+CSS+JS实现)项目演示地址:成人教育网AAP端下载地址:成人教育网APP端.apk-互联网文档类资源-CSDN下载目录项目源码已上传至码云仓库:https://gitee.com/ynavc/sss项目演示地址:http://ynavc.gitee.io/sss一、电脑端效果图1、首页2、所有课程3、新闻资讯4、教师团队5、关于我们二、手机端效果图.

    2022年7月20日
    12
  • 差分曼彻斯特编码详解「建议收藏」

    差分曼彻斯特编码详解「建议收藏」1.确定开始部位:第一个编码为0,表示从低到高第一个编码为1,表示从高到低;每一位由下面代替,表示信号的波动2.其次,下一位编码,遇0则跳动,遇1则不跳动

    2025年7月30日
    0
  • 关于Web应用开发流程的总结「建议收藏」

    关于Web应用开发流程的总结「建议收藏」关于Web应用开发流程的总结

    2022年4月21日
    69
  • linux命令_linux基本命令的使用

    linux命令_linux基本命令的使用创建petalinux工程:petalinux-create-tproject–templatezynq-nzynq_linux配置petalinux工程:petalinux-config–get-hw-description/mnt/hgfs/VMShare/ZYNQ7035_Linux/ZYNQ7035_Linux.sdk/重新配置petalinux工程:petalinux-config配置Linux内核:petalinux-config-ckernel配置Lin

    2022年9月12日
    1

发表回复

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

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