您的位置:首页 > 编程语言 > C语言/C++

c语言位运算、a++、++a操作

2016-07-21 16:47 204 查看
位运算,就是对一个比特(Bit)位进行操作。8个比特构成一个字节(Byte)

C语言提供了六种位运算符:

运算符 & |
^ ~
<< >>

说明 按位与
按位或 按位异或
取反 左移 右移

按位与运算(&)

一个比特(Bit)位只有 0 和 1 两个取值,只有参与&运算的两个位都为 1 时,结果才为 1,否则为 0。例如1&1为 1,0&0为 0,1&0也为 0,这和逻辑运算符&&非常类似。

按位或运算(|)

参与|运算的两个二进制位有一个为 1 时,结果就为 1,两个都为 0 时结果才为 0。例如1|1为1,0|0为0,1|0为1,这和逻辑运算中的||非常类似。

按位异或运算(^)

参与^运算两个二进制位不同时,结果为 1,相同时结果为 0。例如0^1为1,0^0为0,1^1为0。

取反运算(~)

取反运算符~为单目运算符,右结合性,作用是对参与运算的二进制位取反。例如~1为0,~0为1,这和逻辑运算中的!非常类似。

左移运算(<<)

左移运算符<<用来把操作数的各个二进制位全部左移若干位,高位丢弃,低位补0。

右移运算(>>)

右移运算符>>用来把操作数的各个二进制位全部右移若干位,低位丢弃,高位补 0 或 1。如果数据的最高位是 0,那么就补 0;如果最高位是 1,那么就补 1。

#include <stdio.h>

void bit_operation();

int main(){
int c;
int a=10;
c=a++;
printf("先赋值后运算\n");
printf("1、c=%d \n",c);
printf("2、a=%d \n",a);

a=10;
c=a--;
printf("2、c=%d \n",c);
printf("4、a=%d \n",a);

printf("先运算后赋值\n");
a=10;
c=++a;
printf("5、c=%d \n",c);
printf("6、a=%d \n",a);

a=10;
c=--a;
printf("7、c=%d \n",c);
printf("8、a=%d \n",a);

bit_operation();

}

//位运算
void bit_operation(){
unsigned int a = 60; /* 60 = 0011 1100 */
unsigned int b = 13; /* 13 = 0000 1101 */
int c = 0;

c = a & b; /* 12 = 0000 1100 */
printf("1、c=%d\n", c );

c = a | b; /* 61 = 0011 1101 */
printf("2、c=%d\n", c );

c = a ^ b; /* 49 = 0011 0001 */
printf("3、c=%d\n", c );

c = ~a; /*-61 = 1100 0011 */
printf("4、c=%d\n", c );

c = a << 2; /* 240 = 1111 0000 */
printf("5、c=%d\n", c );

c = a >> 2; /* 15 = 0000 1111 */
printf("6、c=%d\n", c );
}

结果:

先赋值后运算
1、c=10
2、a=11
2、c=10
4、a=9
先运算后赋值
5、c=11
6、a=11
7、c=9
8、a=9

位运算:
1、c=12
2、c=61
3、c=49
4、c=-61
5、c=240
6、c=15
Press any key to continue
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: