c语言 a<<=1与a<<1有什么区别?

如题所述

c语言 a<<=1与a<<1的区别:

1、运算符号的含义不同

<<=是左移赋值运算符,a<<=b是把a的二进制数左移b位,然后把结果赋值给a;

<<是左移运算符,a<<b是把a的二进制数左移b位。

2、运算结果不同

a<<=1表示把左边运算数a的二进制数进行左移1位运算,然后把计算的结果赋值给a,会改变a的值;

a<<1表示把左边运算数a的二进制数进行左移1位运算,不改变a的值。

3、a<<=1和a<<1运算后的a的值不一样

举例说明:

a<<=1例子:假设a为11100101,那么进行左移1位运算后结果为11001010,然后把这个值赋值给a,那么a就变为11001010。

a<<1例子:假设a为11100101,那么进行左移1位运算后结果为11001010,但是a的值不变还是为11100101。

扩展资料:

<<、=运算符在C语言中的功能:

1、<<的功能

把“<<”左边的运算数的各二进位全部左移若干位,由“<<”右边的数指定移动的位数,高位丢弃,低位补0。如a<<b,则将数据a格比特位向左移b位,即左移a位就是将数据扩大至原来的2的a次方倍。

2、=的功能

对对象进行赋值,如a=b,则a的值为b。在c语言中也常常将赋值运算符=与其他的运算符结合起来,表示按照优先级顺序处理对象后,再对对象进行赋值。

参考资料:百度百科-C语言运算符

温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2019-11-06

c语言 a<<=1与a<<1的区别:

1、表示的含义不同

a<<=1表示左移运算后,对a进行赋值。

a<<1表示只对a进行左移运算。

2、运算的结果不同

a<<=1在运算后,a的值会变成a进行左移运算后的值。

a<<1在运算后,a的值不会改变。

扩展资料

<<、=运算符在C语言中的功能:

1、<<的功能

把“<<”左边的运算数的各二进位全部左移若干位,由“<<”右边的数指定移动的位数,高位丢弃,低位补0。如a<<b,则将数据a格比特位向左移b位,即左移a位就是将数据扩大至原来的2的a次方倍。

2、=的功能

对对象进行赋值,如a=b,则a的值为b。在c语言中也常常将赋值运算符=与其他的运算符结合起来,表示按照优先级顺序处理对象后,再对对象进行赋值。

本回答被网友采纳
第2个回答  推荐于2019-09-12

1.运算步骤长度不同

<<是左移运算符,=是赋值运算符,前者的优先级要大于后者。因此在a<<=1在这个表达式当中共进行了两步:

第一步是a<<,a(即二进制的值)向左移。

左移运算的两个操作数应为整数类型。第一个操作数是要进行移位操作的数,第二个操作数指定第一个操作数移动的位数。如果第二个操作数等于0则不发生任何移位。因此a不发生位移。

第二步是=1,将1赋予给a,也就是a=1。

而a<<1只发生了左移,也就是只进行了一步。

2.最后a的值不同

上面提到a<<=1的第二步是将1赋予给a,也就是a=1。因此最后a的值是1。

而a<<1将a(即二进制的值)向左移动了一位,高位补0,低位遗弃,但是a的值不变,因此两个a的值不同。

3.运算结果不同

最后a<<=1整个表达式的值为1,而a<<1表达式的值等于变量a(即二进制的值)向左移动了一位之后的值。

扩展资料:

<<、=运算符在C语言中的功能

1.<<的功能

把“<<”左边的运算数的各二进位全部左移若干位,由“<<”右边的数指定移动的位数,高位丢弃,低位补0。如a<<b,则将数据a格比特位向左移b位,即左移a位就是将数据扩大至原来的2的a次方倍。

2.=的功能

对对象进行赋值,如a=b,则a的值为b。在c语言中也常常将赋值运算符=与其他的运算符结合起来,表示按照优先级顺序处理对象后,再对对象进行赋值。

参考资料:百度百科-左移运算符

本回答被网友采纳
第3个回答  推荐于2017-09-11
在C语言中<<是左移运算符, <<=是左移赋值符
那么:
a<<1 代表着左移计算,单纯的计算,并不改变a的值
a<<=1则意味着先对a进行左移计算,然后把计算的结果赋值给a,会改变a的值。
第4个回答  推荐于2017-09-26
a<<=1等价于a=a<<1,就是将a按位左移后将值赋值给a
a<<1只是将a按位左移,并不改变a的值本回答被提问者和网友采纳
相似回答