首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

c语言的一点有关问题

2012-08-28 
c语言的一点问题这个代码的结果是不是就是1或者0?#include stdio.hvoid main (){printf(0 & 0 is %d\n

c语言的一点问题
这个代码的结果是不是就是1或者0?
#include <stdio.h>

void main ()
 {
  printf("0 & 0 is %d\n", 0 & 0);
  printf("0 & 1 is %d\n", 0 & 1);
  printf("1 & 1 is %d\n", 1 & 1);
  printf("1 & 2 is %d\n", 1 & 2);
  printf("15 & 127 is %d\n", 15 & 127);
 }
 但是测试结果却是这样的
0&0 is 0
0&1 is 0
1&1 is 1
1&2 is 0
15&127 is 15
前面的还看的懂 但是到了第四个就感觉不是我语气那个了 (我用的是linux里gcc编译的)

[解决办法]
按位与 只要有一个为0 则为0 2个都为1才得1
1&2 = 1&10 = 0
15&127 = 1111&1111111 = 1111 = 15

[解决办法]
2进制按位于

01
10
--
00
[解决办法]

C/C++ code
&是按位与: printf("1 & 2 is %d\n", 1 & 2);1 : 0x000000012 : 0x00000010 &     0x00000000  ==>0printf("15 & 127 is %d\n", 15 & 127);15:  0x00001111127: 0x11111111 &     0x00001111  ==>15
[解决办法]
只看后八位

0000 0001&0000 0010=0000 0000

0000 1111&0111 1111=0000 1111

位运算,结合内存存储
[解决办法]
位运算是以位为单位的,因此你要以二进制位的角度来看,把数字转换为这样来看就很清楚了:
00000001 & 00000010 = 00000000 ( 0)
00001111 & 11111111 = 00001111 (15)

热点排行