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

位运算,就是对一个比特(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



  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值