php位运算与二进制
2020-12-13 03:12
标签:style blog c http color width ? 二进制 二进制就是用0和1来表示计算机语言的,0,1可以表示任意数,其逢二进一 二进制有三个重要概念 ?位运算 位运算符运算规则: 按位与&:两位全为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
1.找出1的补码
00000000 00000000 00000000 00000001 1
00000000 00000000 00000000 00000100
$a=1
php位运算与二进制,搜素材,soscw.com php位运算与二进制 标签:style blog c http color width 原文地址:http://www.cnblogs.com/tangyue/p/3724872.html