C言語におけるビット演算と論理演算


この記事は次のとおりです.http://blog.csdn.net/qp120291570/article/details/8708286
ビット演算
C言語におけるビット演算には、(&)、または(|)、または(^)、非(~)が含まれる.
次のコードパッケージは、これらの基本演算を拡張し、2つの数の交換(3番目の数を使用しない)があります.
#include<stdio.h>
#include<stdlib.h>
//print a int in binary
void bit_print(int a)
{
  int i;
  int n=16;
  int mask = 1 << (n-1);
  for(i = 1; i <= n; ++i)
  {
    putchar(((a & mask) == 0) ? '0' : '1');
    a <<= 1;
    if(i %8 == 0 && i < n)
	putchar(' ');
   }
   printf("
"); } void inplace_swap(int *x,int *y) { *y=*x^*y; *x=*x^*y; *y=*x^*y; } int main() { int a=19,b=38; printf("a: "); bit_print(a); printf("b: "); bit_print(b); printf("~a: "); bit_print(~a); printf("a&b:"); bit_print(a&b); printf("a|b:"); bit_print(a&b); printf("a^b:"); bit_print(a^b); printf("a=%d,b=%d
",a,b); inplace_swap(&a,&b); printf("After swap:
"); printf("a=%d,b=%d
",a,b); return 1; }

C语言中的位运算和逻辑运算_第1张图片
ろんりえんざん
論理演算には|,&,!,論理演算の、または、および、非に対応します.論理演算の結果は2つしかありません.TRUEまたはFALSEです.0はFALSEに対応し、0以外はTRUEである.論理演算には、1番目のパラメータを評価して式の結果を決定できる場合、論理式は2番目のパラメータを評価しません.
簡単な例です.
#include<stdio.h>  
int main()  
{  
    int a=32,b=43;  
    printf("a:%d,b:%d
",a,b); printf("!a:%d,a||b:%d,a&&b:%d
",!a,a||b,a&&b); printf("a++||b--:%d
",a++||b--); printf("a:%d,b:%d
",a,b); // printf("Hello
"); return 1; }

C语言中的位运算和逻辑运算_第2张图片