PHP高手进来,求答案
PHP中按位移、按位或、按位异或、按位左移、按位右移、按位取反!!以上都是什么意思啊?详细点解答!!新手...
PHP中按位移、按位或、按位异或、按位左移、按位右移、按位取反!!
以上都是什么意思啊?详细点解答!!
新手 展开
以上都是什么意思啊?详细点解答!!
新手 展开
1个回答
展开全部
这些都是对二进制数字的运算~
所以按位与
比如二进制数字110,和1101
先把第一个位数和第二位补全,排成这个样子
0110
1101
按位与就是,对应位上的数字全是1,则运算结果的对应位上是1,否则是0
这样运算的结果就是
0100
-----------------------------------------
按位或呢,就是,对应位上的数字有1,则运算结果的对应位上就是1,全是0,结果才是0
那么例子中的运算结果就是
1111
------------------------------------------
按位异或呢,就是对应位的数字相同取1,不同就取0
那么例子中的运算结果就是0100
换个例子,比如101和101,结果就是111
------------------------------------------
按位左移N位,就相当于把一个二进制数字右边补N个0
比如111这个数,左移2位的运算结果就是11100,(是不是看上去就相当于把这个111往左移动了两位?)
-----------------------------------------
右移同理,相当于省略去二进制数字的后N位
比如111这个数,右移2位运算结果就是1
----------------------------------------
按位取反呢,就是一个数,原先是1的,变成0,原先是0的,变成1
比如10110这个数,取反之后就是01001,也就是1001,很好理解吧~
-----------------------------------------
这些二进制的运算就像是十进制运算中的加减乘除(当然有不同的地方),是属于二进制数字的一种~~如果是入门PHP的话,一般很少会接触到的^ ^,如果想深入学,建议看一些算法类的数,里面的一些运算经常要用到二进制的这些运算~
辛苦打的哦~希望对你有帮助~
所以按位与
比如二进制数字110,和1101
先把第一个位数和第二位补全,排成这个样子
0110
1101
按位与就是,对应位上的数字全是1,则运算结果的对应位上是1,否则是0
这样运算的结果就是
0100
-----------------------------------------
按位或呢,就是,对应位上的数字有1,则运算结果的对应位上就是1,全是0,结果才是0
那么例子中的运算结果就是
1111
------------------------------------------
按位异或呢,就是对应位的数字相同取1,不同就取0
那么例子中的运算结果就是0100
换个例子,比如101和101,结果就是111
------------------------------------------
按位左移N位,就相当于把一个二进制数字右边补N个0
比如111这个数,左移2位的运算结果就是11100,(是不是看上去就相当于把这个111往左移动了两位?)
-----------------------------------------
右移同理,相当于省略去二进制数字的后N位
比如111这个数,右移2位运算结果就是1
----------------------------------------
按位取反呢,就是一个数,原先是1的,变成0,原先是0的,变成1
比如10110这个数,取反之后就是01001,也就是1001,很好理解吧~
-----------------------------------------
这些二进制的运算就像是十进制运算中的加减乘除(当然有不同的地方),是属于二进制数字的一种~~如果是入门PHP的话,一般很少会接触到的^ ^,如果想深入学,建议看一些算法类的数,里面的一些运算经常要用到二进制的这些运算~
辛苦打的哦~希望对你有帮助~
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询