A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 二狗 中级黑马   /  2014-4-12 04:16  /  1563 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 二狗 于 2014-4-12 22:20 编辑

完全听不懂按位与是什么意思。然后后面老师讲的按位与的用处也听不懂,谁能用比较浅显的语言给我解答一下按位与是什么意思有什么用处。
  1. #include <stdio.h>

  2. int main()
  3. {
  4.     /*按位与&
  5.      10111011
  6.      10101101
  7.      --------
  8.      10101001
  9.      
  10.      1001
  11.      0101
  12.      ----
  13.      0001
  14.      */
  15.    
  16.     printf("%d\n",9&5);
  17.    
  18.     return 0;
  19. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
jing迪 + 1

查看全部评分

6 个回复

正序浏览
按位与运算简单说就是比较两个数的每一位是不是为真。
通俗点说就是将两个数展开成两个二进制数然后每一位对应按位进行比较,如果对应位都为1则结果位就是1,如果有一个为0就是0。举个例子:
9&5  转化成二进制数为 1001 & 0101
计算过程如下:
     1001
&  0101
————
      0001
结果为0001就是1.首先9转成二进制数为1001,5转成二进制数为0101。1001的从第一位到第四位为1,0,0,1.0101的从第一位到第四位为0,1,0,1.将0101的第四位1与1001的第四位1进行按位与运算也就是1 & 1结果为1,因为按位与运算就是看两边的结果,都为1则是1,有一个是0就是0.所以1001和0101这两个数的其他位数比较都是0&1或者1&0,有一个0,因此其他位数的结果都为0.(将要进行按位与运算的两个数转成对应的二进制数再算就好理解了)
回复 使用道具 举报
& 就是二进制位数进行比较,如果两个都为真,结果就为真:
1 & 1 = 1
1 & 0 = 0
0&1=0
0&0 = 0

主要不要和逻辑与混淆了 逻辑与是&&
true &&true=true
true&&false=false
false&&false=false
false&&true=false
而且逻辑与只要左边为真,就不会对右边进行判断。

评分

参与人数 1技术分 +1 收起 理由
jing迪 + 1

查看全部评分

回复 使用道具 举报
  1. #include <stdio.h>

  2. int main()
  3. {
  4.     /*按位与&(记住全1为1,否则为0即可)
  5.      10111011
  6.      10101101
  7.      --------
  8.      10101001
  9.      
  10.      1001
  11.      0101
  12.      ----
  13.      0001
  14.      */
  15.    
  16.     printf("%d\n",9&5);
  17.    
  18.     return 0;
  19. }
复制代码
回复 使用道具 举报
1. 按位与 &
只有对应的两个二进位都为1时,结果位才为1,否则为0;
应用:1.按位与判断奇偶性,偶数二进制最后一位是0,奇数为1,要判断的数&1,即可判断数的奇偶性。
          2.判断二进制数的某一位是1还是0,不是最后一位,先右移到最后一位,再&1。
回复 使用道具 举报
按位与容易和逻辑与弄混
按位与&
可以理解成二进制与二进制的比较,
运算规则:0&0=0;   0&1=0;    1&0=0;     1&1=1;
       即:两位同时为“1”,结果才为“1”,否则为0
比如
9&5  即 0000 1001 & 0000 0101 = 0000 0001   因此,9&5的值得1


逻辑与&&

&&”(逻辑与)是逻辑运算符。 “逻辑与”相当于生活中说的“并且”,就是两个条件都同时成立的情况下“逻辑与”的运算结果才为“真”。
比如:
(a>3)&&(a<5)
若a是4,先判断左面成立不成立,如果成立,在判断右面成立不成立,如果左右都成立,那么返回值为真也就是数字1,如果不成立,返回0(假)。
值得注意的是。
如果左面的条件不成立,那么就不会进行右面的条件判断。直接返回0(假)
逻辑与结果只讲真和假,而按位与得出的却是实实在在的一个数

评分

参与人数 1技术分 +1 收起 理由
jing迪 + 1

查看全部评分

回复 使用道具 举报
"按位与" 运算符 (&):
如果两个相应的二进制位都为1,则该位的结果为1,否则为0.  
例如:
0&0=0    ,0&1=0    ,1&0=0    ,1&1=1

再举个例子:
3&5
------》
            00000011         (3)
      &    00000101         (5)
----------------------------------
            00000001         (1)

评分

参与人数 1技术分 +1 收起 理由
jing迪 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马