您的位置:首页 > 其它

c 语言 位运算笔记。

2016-03-24 10:48 351 查看
#include<stdio.h>
#include<stdlib.h>

//&
// 11 1
// 10 0
// 01 0
// 00 0

//1001 0011
//1111 0000
//1001 0000

//10 -》0 00-》0   1,0 0-》0
//11 -》1  0&1=0   1,0与1想与,结果不变

//XXXX XXXX
//1111 0111

//1011 0111
//1111 0000
//1011 0000
//>>4

//0000 1111
//0000 0111
//  X   Y

void main1()
{
unsigned char ch = 255;// 1111 1111
unsigned char nch = 15;// 0000 1111
// 0000 1111
unsigned char rch = ch&nch;
printf("%d", rch);

getchar();

}


位或:

#include<stdio.h>
#include <stdlib.h>

// |
// 11 1
// 10 1
// 01 1
// 00 0

//XXXX  XXXX
//0000  1111

//11 ->1 01-> 1  0,1 -1 ->1
//10->1  00->0   1,0  -0 不变

void main2()
{

unsigned char ch = 255;// 1111 1111
unsigned char nch = 15;// 0000 1111
// 1111 1111
unsigned char rch = ch|nch;
printf("%d", rch);

getchar();

}


异或:

#include <stdio.h>
#include <stdlib.h>

// ^
// 11 0

// 00 0
// 10 1

// 01 1

//10 ->1  ,00->0   0 不变
//01->1  ,11->0  遇到1反转

//1011 0111
//0000 1111
//1011 1000

void main6()
{
int a = 10; // 0000 1010

int b = 20;//  0001 0100

printf("\na=%d,b=%d", a, b);
a = a^b;   // 0000 1010 a

//  0001 0100 b
// 0001 1110 a
b = a^b;  //  0000 1010 b=10
// 0001 1110 a
a = a^b;   // 0001 0100 a=20

printf("\na=%d,b=%d", a,b);

system("pause");

}

void  main4()
{
unsigned char ch = 255;// 1111 1111
unsigned char nch = 0;

unsigned char rch = ch^nch;
printf("%d", rch);

system("pause");

}

void main3()
{
unsigned char ch = 255;// 1111 1111
unsigned char nch = 15;// 0000 1111
// 1111 0000
unsigned char rch = ch^nch;
printf("%d", rch);

system("pause");

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: