123666666 发表于 2022-5-16 22:25:06

“|” “^”搞不懂,怎算出结果的

#include<stdio.h>
int main(void)
{
      int a,b;
      a=077;
      b=a^3;

      printf("\40 :The a&b(decimal)is %d\n",b);
      b^=7;
      printf("\40 :The a&b(decimal)is %d\n",b);
      return 0;
}
~                                                                                                                                                                                                                  
~                                                                                                                                                                                                                  
~                                                                                                                                                                                                                  
~                                                                                                                                                                                                                  
~               
                :The a&b(decimal)is 60
                :The a&b(decimal)is 59                                                                                                                                                                     

ba21 发表于 2022-5-16 22:35:55

a=077;
在整数常量前面加上前缀 0 ,表示它是八进制整数

jackz007 发表于 2022-5-16 22:47:53

本帖最后由 jackz007 于 2022-5-16 22:57 编辑

      077是八进制 77,用二进制表达是0011 1111,3 的 二进制形式是 0011。
      ^ 是二进制异或运算,规则是,如果参与运算的两个二进制位相等,则该位的运算结果是 0,否则,是 1
      077 ^ 3
      就是
0011 1111
0000 0011

0011 1100
         结果是 0011 1100,八进制值是 074,十六进制值是 0x3c,十进制值是 60
      | 是二进制或运算,规则是,如果参与运算的两个二进制位中有一方(或两方)为 1,则该位的运算结果为 1,否则,为 0
      077 | 3
       就是
0011 1111
0000 0011

0011 1111
      结果是0011 1111,八进制是 077,十六进制是 0x3f,十进制是 63
页: [1]
查看完整版本: “|” “^”搞不懂,怎算出结果的