c语言中复合位运算赋值(&=,|=,^=,>>=,<<=)表示什么意思?

作者&投稿:张肿 (若有异议请与网页底部的电邮联系)
C语言中“>>=,<<=,&=,^=,|=”分别表示什么意思?请举例说明~

1、C语言中的 >>= 意思为:右移后赋值
代码示例为:
x = 8; x >>= 3;
右移后结果为:00000000 00000000 00000000 00000001

2、C语言中的 <<= 意思为:左移后赋值
代码示例为:
x = 8;
x <<= 3;
左移后赋值结果为:00000000 00000000 00000000 01000000

3、C语言中的 &= 意思为:按位与后赋值
代码示例为:
x = 0x02;
x &= 0x01;
按位与后的结果为:0x00

4、C语言中的 ^= 意思为:按位异或后赋值
代码示例为:
x = 0x02;
x ^= 0x01;
按位异或的结果为:0x03 等同于0011

5、C语言中的 |= 意思为:按位或后赋值
代码示例为:
x = 0x02;
x |= 0x01;
按位或的结果为:0x03 等同于0011



扩展资料:
1、C语言运算符的优先级顺序
运算符的优先级从高到低大致是:单目运算符、算术运算符、关系运算符、逻辑运算符、条件运算符、赋值运算符(=)和逗号运算符。
2、比特右移运算符的位移
比特右移(>>)运算符可以是算术(左端补最高有效位)或是逻辑(左端补 0)位移。例如,将 11100011 右移 3 比特,算术右移后成为 11111100,逻辑右移则为 00011100。因算术比特右移较适于处理带负号整数,所以几乎所有的编译器都是算术比特右移。
参考资料来源:百度百科-C语言

1.= 赋值运算符 变量=表达式 如:a=3;将a的值赋为3
2./= 除后赋值 变量/=表达式 如:a/=3;即a=a/3
3.*= 乘后赋值 变量*=表达式 如:a*=3;即a=a*3
4.%= 取模后赋值 变量%=表达式 如:a%=3;即a=a%3
5.+= 加后赋值 变量+=表达式 如:a+=3;即a=a+3
6.-= 减后赋值 变量-=表达式 如:a-=3;即a=a-3
7.<<= 左移后赋值 变量<<=表达式 左移就是将《左边的数的二进制各位全部左移若干位,《右边的数指定移动位数,高位丢弃,低位补0, 移几位就相当于乘以2的几次方
8.>>= 右移后赋值 变量>>=表达式 右移运算符是用来将一个数的各二进制位右移若干位,移动的位数由右操作数指定(右操作数必须是非负值),移到右端的低位被舍弃,对于无符号数,高位补0。对于有符号数,某些机器将对左边空出的部分用符号位填补(即“算术移位”),而另一些机器则对左边空出的部分用0填补(即“逻辑移位”)。注意:对无符号数,右移时左边高位移入0;对于有符号的值,如果原来符号位为0(该数为正),则左边也是移入0。如果符号位原来为1(即负数),则左边移入0还是1,要取决于所用的计算机系统。有的系统移入0,有的
系统移入1。移入0的称为“逻辑移位”,即简单移位;移入1的称为“算术移位”。

9.&= 按位与后赋值 变量&=表达式 按位与是指:参加运算的两个数据,按二进制位进行“与”运算。如果两个相应的二进制位都为1,则该位的结果值为1;否则为0。这里的1可以理解为逻辑中的true,0可以理解为逻辑中的false。按位与其实与逻辑上“与”的运算规则一致。逻辑上的“与”,要求运算数全真,结果才为真。若,A=true,B=true,则A∩B=true
10. ^= 按位异或后赋值 变量^=表达式 参与运算的两个量按照对应的位进行异或运算,且
0^0→0, 0^1→1, 1^0→1, 1^1→0
此外,一个数与0异或仍保持不变,即a^0=a
一个数与自己异或结果为0,即a^a=0
11.|= 按位或后赋值 变量|=表达式 参与运算的两个量按照对应位进行或运算,且
0|0→0, 0|1→1, 1|0→1, 1|1→1
这些位运算都是与二进制码有关的,所以多弄弄也就会了

位运算符与赋值运算符可以组成复合赋值运算符如 :&=, |=, >>=, <<=, ∧ =
和+=,-=,*=,/=类似.
即把左边值与右边值位运算之后赋值给左边变量.
例如 ,a & = b 相当于 a = a & b 。 a << =2 相当于 :a = a << 2 。

明白了没有呀?

&=,按位与后赋值,变量&=表达式;  

|=,按位或后赋值,变量|=表达式;
^=,按位异或后赋值,变量^=表达式;
>>=,右移后赋值,变量>>=表达式;
<<=,左移后赋值,变量<<=表达式;

类似的还有,
/=,除后赋值,变量/=表达式; 
*=,乘后赋值,变量*=表达式; 
%=,取模后赋值,变量%=表达式; 
+=,加后赋值变量,+=表达式; 
-=,减后赋值变量,-=表达式;
这些是C/C++独有的复合赋值运算符,结合方向,从右向左。是一种缩写形式,使得对变量的改变更为简洁,更有效率。

举个例子:
a+=5 相当于 a=a+5
即先进行运算再赋值


请问c语言复合赋值运算符的优先级是什么?
首先要明白的是复合运算其实也就是两条语句的简单表示。举个例子:a += 2这句复合运算表达式。将它拆分就是:a = a + 2;在运算符优先级表中,赋值运算的优先级是最低的。因此会先计算a+2;然后将结果重新赋值给a;其他的复合赋值运算符也是这样。

复合赋值运算符讲解
<<= 左移位赋值 复合运算的一般形式为: 变量 复合赋值运算符 表达式 其含义就是变量与表达式先进行运算符所要求的运算,再把运算结果赋值给参与运算的变量。其实这是C语言中一种简化程序的一种方法,凡是二目运算都可以用复合赋值运算符去简化表达。例如: a+=56等价于a=a+56 y\/=x+9 等价于 y=y\/(x+9) ...

>>和<<分别表示什么意思啊?
C语言中的>>和<<分别是左移运算符和右移运算符,用于整数在二进制形式的移位运算。1、左移运算符(<<)规则:按二进制形式把所有的数字向左移动对应的位数,高位移出(舍弃),低位的空位补零。语法格式:需要移位的数字 << 移位的次数,例如: 3 << 2,则是将数字3左移2位。数学意义:在数字...

c语言的复合赋值符。。。 <<= >>= &= ^= |= 分别有什么用啊??拜托了...
在赋值符“=”之前加上其它二目运算符可构成复合赋值符。如 :+=,-=,*=,/=,%=,<<=,>>=,&=,^=,|=。构成复合赋值表达式的一般形式为: 变量 双目运算符=表达式 它等效于 变量=变量 运算符 表达式 a<<=n(整数):将变量a的值的二进制形式先左移n位(等效于将a二进制值乘以2的n次方...

c语言,复合赋值运算符
首先+=和*=优先级相同,且都是右结合,所以上述语句等价于:k += ( i *= k);等价于:i *= k; \/\/ i = i*k k += i; \/\/ k = k+ i;

问个c语言
你好~~首先回答你的一个问题:k \/= 10; 他的含义就是 : k = k \/ 10;,其中,\/=是C中的复合运算符 , 在现代的编译器中复合运算符和普通的:k = k + 10;是没有什么区别的(但是在过去的K&R C中 , 认为复合运算符可以产生更紧凑的代码),最后我的建议是: 尽量使用复合运算符 , ...

C语言中的运算符分几类?
C语言中,运算符除了常见的三大类,算术运算符、关系运算符与逻辑运算符之外,还有一些用于完成特殊任务的运算符。运算符的运算优先级共分为15 级,1 级最高,15 级最低。 在表达式中,优先级较高的先于优先级较低的进行运算。而在一个运算量两侧的运算符 优先级相同时,则按运算符的结合性所规定...

c语言中,“+=”是什么意思?
+=是C语言中的一种复合赋值运算符,a+=b 等价于 a=a+b,是后者的一种简化性写法,并且,其优先级(即:同一个表达式中存在多种运算符时,不同运算符之间的运算顺序)与 =相同。类似的还有 +=,*=,\/= 。都具有相同形式的用法。

c语言的复合赋值运算符
A=A+1,首先要求赋值号右侧的表达式A的值,然后将它与1相加,接着求赋值号左侧的表达式A的值,最后将加法的结果写回A中,所以表达式A被求值了两次;A+=1,首先求得赋值号左侧的表达式A的值,将这个值加上1,然后写回A中,表达式A只被求值了一次。这是理想的情况,实际中现代编译器都非常智能,...

c语言的符号集包括哪三种
用于逻辑运算。包括与(&&)、或(||)、非(!)三种。4.位操作运算符 参与运算的量,按二进制位进行运算。包括位与(&)、位或(|)、位非(~)、位异或(^)、左移(<<)、右移(>>)六种。5.赋值运算符 用于赋值运算,分为简单赋值(=)、复合算术赋值(+=,-=,*=,\/=,%=)和复合位运算赋值(&=,...

锦屏县17064874099: c语言的复合赋值运算 -
金态久强: 先计算a-=a*a a=12-12*12=-132 再算a=-132+(-132)=-264

锦屏县17064874099: c语言加=是什么意思? -
金态久强: C语言中+=是复合赋值运算符.复合赋值运算符就是在简单赋值符“=”之前加上其它运算符构成,例如+=、-=、*=、/=、%=. 即:a+=1;等价于a=a+1.+=的意思就是把左边的第一个符号移到右边,其实就是b=b+c的意思.直接把b+=c的b+移...

锦屏县17064874099: c语言复合赋值符.需要详细解释.跟小例子. -
金态久强: >= &= ^= |= 都是叫做位操作符(bitwise operator) 字面带来的效果和+= -=这些都差不多,他们只不过按位来运算罢了!一个典型的例子 两个变量交换数据 不用第三个变量 看好了 a ^= b; b ^= a; a ^= b; 可以自己推敲一下,位运算一般在嵌入式设备编程中经常出现!

锦屏县17064874099: c语言的复合赋值符... <<= >>= &= ^= |= 分别有什么用啊??拜托了!! 谢谢~~ -
金态久强: 在赋值符“=”之前加上其它二目运算符可构成复合赋值符.如 :+=,-=,*=,/=,%=,<<=,>>=,&=,^=,|=.构成复合赋值表达式的一般形式为: 变量 双目运算符=表达式它等效于 变量=变量 运算符 表达式 a<<=n(整数):将变量a的...

锦屏县17064874099: 嵌入式c语言中 &= ~和|=各是什么意思 -
金态久强: &是按位与(双目运算符,需要2个操作数) |是按位或(双目运算符) ~是按位非(单目运算符)1&0=0, 0&1=0, 0&0=0, 1&1=1 1|0=1, 0|1=1, 0|0=0, 1|1=1 ~1=0,~0=1a|=b等价于a=a|b; 同理a&=b等价于a=a&b所以rINTPND |=BIT_UART0;等价于rINTPND=rINTPND | BIT_UART0 rINTSUBMSK &= ~BIT_SUB_RXD0等价于rINTSUBMSK = rINTSUBMSK &(~BIT_SUB_RXD0)按位运算就是运算的时候先将操作数换算成二进制数来进行计算 譬如3 & 5就是011 & 101=001

锦屏县17064874099: /=在c语言中什么意思 -
金态久强: “/=”属于复合赋值运算符中的一种,表示把左边的变量除于右边变量的值赋予右边的变量,例如:a/=b等价于a=a/b.同类的还有*=(例如:a*=b等价于a=a*b)、+=(例如:a+=b等价于a=a+b)、-=(例如:a-=b等价于a=a-b)、%=(例如:a%=b等价于a=a%b(这里的%符号是求余运算符,a%b表示求a除于b的余数)).或许你还会问为什么a/=b为什么不直接用a=a/b来表示,这是因为这样的表示方法可以让程序更加简洁.

锦屏县17064874099: C语言中的复合赋值运算符“%=”怎么用?
金态久强: 要点1: *=,+=,-=,%= 等符号的应用是同道理的: 即把左边的移过右边运算(右边用括号包住,表示先运算),结果再给左边(注意左边只能是变量,不可为表达式) A += B 等价于A = A + (B); (B可以是值或表达式,这里的=仍是赋值号哦,...

锦屏县17064874099: 复合位运算赋值都代表什么意思 -
金态久强: 和+=,-=,*=,/=类似.即把左边值与右边值位运算之后赋值给左边变量.

锦屏县17064874099: C语言中复合赋值运算符 :<<= , >>= ,&= ,^= , |= 分别表示什么啊 ? 请高手指点 -
金态久强: 运算符= 这种组合是赋值语句的一种简写形式,例如:a+=b其实就是a=a+b,只不过你说的是逻辑运算符,道理是一样的.<<是左移,>>是右移,&是与,|是或,^是异或,都是针对2进制运算的.

锦屏县17064874099: 在c语言中复合的赋值运算符怎么处理? -
金态久强: x+=x-=x*x; 你要正确拆开这个式子很重要 首先是 x-=x*x 然后是 x-=36 继续 x=x-36 x=-30 x+=-30 x=-30-30 =-60

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网