• php位运算 与 或 异或 取反


    <?php
    /**
    php中有4个位运算,分别是&与 |或 ^异或 ~取反
    & 两位全为1,结果为1
    | 有一位为1,结果为1
    ^ 一个为0,一个为1,结果为1
    ~ 取反0->1,1->0
    
    1.二进制的最高位是符号位,0表示正数,1表示负数。
    2.正数的原码,反码,补码都一样。
    3.负数的反码=它的原码符号位不变,其它位取反(0->1,1->0)。
    4.负数的补码=它的反码+1。
    5.0的反码,补码都是0.
    6.php没有无符号数,换言之,php中的数都是有符号的。
    7.在计算机运算的时候,都是以补码的方式来运算的。
    
    **/
    
     
    
    //异或
    echo 13&7;
    
    echo "<br/>";
    echo 5|4 ;
    
    echo "<br/>";
    echo -3^3;
    
    //推理过程:
    
    /**
    
    13&7
    
    13的补码  00000000 00000000 00000000 00001101
    7的补码   00000000 00000000 00000000 00000111
    13&7      00000000 00000000 00000000 00000101   = 5
    
    5|4
    
    5的补码 00000000 00000000 00000000 00000101
    4的补码 00000000 00000000 00000000 00000100
    5|4      00000000 00000000 00000000 000000101   =5
    
    -3^3
    
    -3的补码
    -3的原码 10000000 00000000 00000000 00000011
    -3的反码 11111111 11111111 11111111 11111100
    -3的补码 11111111 11111111 11111111 11111101
    php位运算 与 或 异或 取反
    复制代码
    <?php
    /**
    php中有4个位运算,分别是&与 |或 ^异或 ~取反
    & 两位全为1,结果为1
    | 有一位为1,结果为1
    ^ 一个为0,一个为1,结果为1
    ~ 取反0->1,1->0
    
    1.二进制的最高位是符号位,0表示正数,1表示负数。
    2.正数的原码,反码,补码都一样。
    3.负数的反码=它的原码符号位不变,其它位取反(0->1,1->0)。
    4.负数的补码=它的反码+1。
    5.0的反码,补码都是0.
    6.php没有无符号数,换言之,php中的数都是有符号的。
    7.在计算机运算的时候,都是以补码的方式来运算的。
    
    **/
    
     
    
    //异或
    echo 13&7;
    
    echo "<br/>";
    echo 5|4 ;
    
    echo "<br/>";
    echo -3^3;
    
    //推理过程:
    
    /**
    
    13&7
    
    13的补码  00000000 00000000 00000000 00001101
    7的补码   00000000 00000000 00000000 00000111
    13&7      00000000 00000000 00000000 00000101   = 5
    
    5|4
    
    5的补码 00000000 00000000 00000000 00000101
    4的补码 00000000 00000000 00000000 00000100
    5|4      00000000 00000000 00000000 000000101   =5
    
    -3^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 11111111 11111111 11111110  《补码》
     推反码《对补码-1》
      11111111 11111111 11111111 11111101   《反码》
    推原码《符号位不变 其他取反》
      10000000 00000000 00000000 00000010   《原码》  =-2
    
    注意:因为二进制没有进位和退位,可以看做是10-1,那就等于1了
    
    **/
    ?>
    
    
    
    
    
    3的补码 00000000 00000000 00000000 00000011
    
    -3^3     11111111 11111111 11111111 11111110  《补码》
     推反码《对补码-1》
      11111111 11111111 11111111 11111101   《反码》
    推原码《符号位不变 其他取反》
      10000000 00000000 00000000 00000010   《原码》  =-2
    
    注意:因为二进制没有进位和退位,可以看做是10-1,那就等于1了
    
    **/
    ?>
  • 相关阅读:
    除去String字符串里面指定的字符串
    JSON总结(java篇)
    关于tomcat文件下载配置
    在多行列表中id同名的<a>标签点击事件处理方法
    java Properties异常:Malformed uxxxx encoding.
    关于An association from the table refers to an unmapped class
    Java实现Mysql数据库自动备份
    Could not publish server configuration for Tomcat v6.0 Server at localhost.
    MySQL备份命令mysqldump参数说明与示例
    图解 | 原来这就是网络
  • 原文地址:https://www.cnblogs.com/archoncap/p/7137013.html
Copyright © 2020-2023  润新知