赞
踩
目录
2个二进制进行&操作,只有当2个的数值都为1时,结果才是1。其他均返回0;
由于只有当2个二进制都为1时,结果才为1,其他均为0,所以结果由下图所示。
"二进制截断",为何说是二进制截断呢,我们用上面的例子来说,15的二进制低4位都是1,而5的二进制是0101。因为&操作必须都为1结果才是1,所以我们是不是可以理解成5把15的其他位的1给截断成0了呢?那再举个例子,0xFFFF = 65535 = 1111 1111 1111 1111,我们用0x1 = 1 = 0000 0000 0000 0001来进行一个&操作。那么结果是1,也就是把0xFFFF的高31位全部置为0,所以就是用0x1把0xFFFF的高31位都截断为0。
2个二进制进行 | 操作,只需要2个二进制存在一个1,结果就是1(2个二进制都为1也是1),很好理解,除了2个二进制都为0,其他结果都是1。
将10和5的二进制分别展示出来
由于只需要2个二进制中存在一个1结果就为1,所以 | 操作后由下图所示。
"二进制组合",这个很好理解,不做多的解释,也就是把2组二进制对齐后组合起来....
2个二进制 ^异或操作,只要2个二进制相同结果就为0,不相同就为1。(注意这里是判断是否相同,并没有判断是不是又1)
"二进制无进位加法",也很好理解,^异或操作是相同为0,不相同为1。而相同的结果只有为11或者00,而11的结果为0,11所以可以理解为二进制做了加法但是没有进位(相加后为0,但是要向高位进1的,但是不进位),而00相加还是为0。而对于不相同的只有10或者01。而01或者10异或操作结果为1,而他们相加也是为1。所以就可以说明异或就是二进制无进位加法。
a = 0011 0010; b = 0010 1010; a = a ^ b; // 运算后a = 0001 1000 b = 0010 1010 b = b ^ a; // 运算后b = 0011 0010 , a = 0001 1000 a = a ^ b; // 运算后a = 0010 1010 , b = 0011 0010
把整个二进制全部取反,0变成1,1变成0。这个太简单了,就不画图理解了。
找到规律后,就能做到一眼看出答案。
最后,如果本帖对您有一定的帮助,希望能点赞+关注+收藏!您的支持是给我最大的动力,后续会一直更新各种框架的使用和框架的源码解读~!
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。