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

来源:互联网 发布:点读笔能下载什么软件 编辑:程序博客网 时间:2024/05/29 18:54

位运算,就是对一个比特(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=102、a=112、c=104、a=9先运算后赋值5、c=116、a=117、c=98、a=9位运算:1、c=122、c=613、c=494、c=-615、c=2406、c=15Press any key to continue



1 0
原创粉丝点击