1. 云栖社区>
  2. PHP教程>
  3. 正文

PHP之位运算(入门基础,面试题目基础)

作者:用户 来源:互联网 时间:2017-12-01 17:03:46

php基础面试题目入门运算

PHP之位运算(入门基础,面试题目基础) - 摘要: 本文讲的是PHP之位运算(入门基础,面试题目基础), 位运算算法有:&,|,  ^, ~, >>,   << 1.二进制:   最高位为符号位,正数为0,负数为1     原码:用二进制来表示一个数   例:0000000 00000000 0000000

位运算算法有:&,|,  ^, ~, >>,   <<


1.二进制

  最高位为符号位,正数为0,负数为1

 

  原码:用二进制来表示一个数

  例:0000000 00000000 00000000 000000011  32 4字节)

 

   正数的原码,反码,补码都一样

   负数的反码:原码符号位不变,其他位取反

  负数的补码:反码+1

   0的反码,补码都是0

 

   php中都是有符号数

   计算机运算时,都是以补码形式运算

2.位运算:

 

 按位与:$a & $b

 

 按位或:$a | $b

 

 按位异或:$a ^ $b不同的位,置1

 

 非:~$a 取反

 

 左移:$a<<$b 

 右移:$a>>$b

  规则:

  算术右移:低位溢出,符号位不变,并用符号位补溢出的高位

  算术左移:符号位不变,低位补

   3*8===3<<3

 

  例子:

  1>>2=?

  1补码:00000000 00000000 00000000 00000001

  1>>2     00000000 00000000 00000000 00000000[补码]->0

 

  例子:

  -1>>2=?

  -1补码:11111111 11111111 11111111 11111111

  -1>>2     11111111 11111111 11111111 11111111[补码]

                 11111111 11111111 11111111 11111110[反码]

                 10000000 00000000 00000000 00000001[原码]->-1

 

  1<<2=?

  1补码:00000000 00000000 00000000 00000001

  1<<2   00000000 00000000 00000000 00000100[补码]->4=1*2*2每次移动一位,相当于乘以2

 

  例子:

  -1<<2=?

  -1补码:11111111 11111111 11111111 11111111

  -1<<2     11111111 11111111 11111111 11111111[补码]

                 11111111 11111111 11111111 11111110[反码]

                 10000000 00000000 0000000000000001[原码]->-1

 

 

  以上的运算,先转为补码进行运算,得到的结果为补码,再转为原码

 

 例子:13&7=。与

  13的补码:00000000 00000000 00000000 00001101

  7的补码:  00000000 00000000 0000000000000111

  13&7       00000000 0000000000000000 00000101[补码]->5

 

 例子:5|4=。或

  5的补码: 00000000 00000000 00000000 00000101

  4的补码: 00000000 00000000 00000000 00000100

  5|4=       00000000 0000000000000000 00000101[补码]->5

 

 例子:-3^3=。异或

  -3的原码: 10000000 00000000 00000000 00000011

  -3的反码: 11111111 11111111 11111111 11111100

 

  -3的补码: 11111111 11111111 11111111 11111101

   3的补码: 00000000 00000000 00000000 00000011

 

   -3^3=       11111111 1111111111111111 11111001[补码]

 

                   11111111 11111111 11111111 11111000[反码]补码-1

                  10000000 00000000 0000000000000111[原码]->-2


以上是云栖社区小编为您精心准备的的内容,在云栖社区的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索php , 基础 , 面试 , 题目 , 入门 运算 ,以便于您获取更多的相关知识。

弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率

40+云计算产品,6个月免费体验

现在注册,免费体验40+云产品,及域名优惠!

云服务器9.9元/月,大学必备
Kubernetes上基于Istio体验云原生应用实践 资料下载