Osheep

时光不回头,当下最重要。

位运算及二进制的操作

多年前的一些东西,藏起来吧

《位运算及二进制的操作》

/**
     * 二进制算法
     * 网上对于原码,反码,补码讲的过于复杂。
     * 这里简单归纳为6句话:
     * 1.二进制的最高位为符号位:0表示正数,1表示负数。
     * 2.正数的原码,反码,补码都一样。
     * 3.负数的反码=原码符号位不变,其他为取反(0->1,1->0)。
     * 4.负数的补码=它的反码+1
     * 5.0的反码、补码都是0.
     * 6.在计算机运行时,都是以补码的方式进行运算。

     */

    $a =3&5;
    /**
     * 且或的操作(两个数字都为1,值才为1)
     * 3的原码:00000000 00000000 00000000 00000011
     * 5的原码:00000000 00000000 00000000 00000101
     * 3&5    00000000 00000000 00000000 00000001
     * 所以:$a=1;
     */
    echo $a.'<br />’;
    
    $b =2|3;
    /**
     * 异或的操作(两个数字一个为1,值为1)
     * 2的原码:00000000 00000000 00000000 00000010
     * 3的原码:00000000 00000000 00000000 00000011
     * 2|3    00000000 00000000 00000000 00000011
     * 所以:$b=3;
     */
    echo $b.'<br />’;
    
    $c = 4^7;
    /**
     * ^的操作(两个数字相同,值为0,否则为1)
     * 4的原码:00000000 00000000 00000000 00000100
     * 7的原码:00000000 00000000 00000000 00000111
     * 4^7    00000000 00000000 00000000 00000011
     * 所以:$c=3;
     */
    echo $c;

点赞