前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【图文】什么是php位运算与二进制

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

作者头像
码农编程进阶笔记
发布2021-09-09 15:14:56
5450
发布2021-09-09 15:14:56
举报

☼ 二进制

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

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

二进制有三个重要概念

▶位运算

位运算符运算规则:

  • 按位与&:两位全为1,结果为1
  • 按位或|:两位有一个为1,结果为1
  • 按位异或^:两位中一个为0,一个为1,结果为1
  • 按位取反~:0取1,1取0

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

例如计算:~2=?

代码语言:javascript
复制
 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=?

代码语言:javascript
复制
 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向右移动两位

代码语言:javascript
复制
 1.找出1的补码
   00000000 00000000 00000000 00000001
 1>>2
   00000000 00000000 00000000 00000000
 $a=1>>2=0

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

代码语言:javascript
复制
  00000000 00000000 00000000 00000001
1<<2
  00000000 00000000 00000000 00000100
$a=1<<2=4
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-08-28,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 码农编程进阶笔记 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档