C语言中的左移《和右移》怎样运算的

2020-11-25 14:13:26 字数 3761 阅读 4015

1楼:云冷宰迎南

移位操作符的两个操作数必须是整型的。整个移位表达式的值的类型也是整型的,而且,左移位操作符与右移位操作符的运算并不对称。

2楼:hunter影

左移 是指向左移动

右移 是指向右移动

具体指的是二进制数平行移动

例如 001101 《2

变化 110100

其他也相同

c程序中,左移“<<”、右移“>>” 的具体用法是什么?

3楼:匿名用户

c语言中,“

<<”为左移运算符,“>>”为右移运算符。

具体使用方法如下:

1、左移运算符(<<)

将一个运算对象的各二进制位全部左移若干位(左边的二进制位丢弃,右边补0)。

例:a = a << 2 将a的二进制位左移2位,右补0,左移1位后a = a * 2;

若左移时舍弃的高位不包含1,则每左移一位,相当于该数乘以2。

2、右移运算符(>>)

将一个数的各二进制位全部右移若干位,正数左补0,负数左补1,右边丢弃。

操作数每右移一位,相当于该数除以2。

例如:a = a >> 2 将a的二进制位右移2位。

左补0 or 补1 得看被移数是正还是负。

4楼:匿名用户

这是两个位操作运算,是对参数二进制方式的位移,移动后,空出的位用0补上。例如:

0111 0101 b << 2 :对这个数左移二位后:1101 0100 b;

再如:5 << 3 :先转换成二进制:0000 0101 b << 3 = 0010 1000 b = 0x28

关于c语言的左移(<<)和右移(>>)

5楼:匿名用户

左移比较简单,右边补0(移几位就补几个0),左边丢掉。

右移比较复杂,右移分两种:

(1)逻辑右移,左边补0(移几位补几位),右边移出去的丢掉。

(2)算术右移,左边补最高位(即原来的最高位是0就补0,是1就补1,因为最高位代表符号,这样可以保证负数不会变成正数),右边丢掉。

6楼:我不知道啊啊

可以定义一个中间变量暂存要被移出去的位,正常移位之后再或上这个中间变量即可~

c语言中的左移和右移?

7楼:匿名用户

移位操作符的两个操作数必须是整型的。整个移位表达式的值的类型也是整型的,而且,左移位操作符与右移位操作符的运算并不对称。

8楼:匿名用户

0111右移一位是把最后一位的1去掉,左边补个0,得0011,转换为十进制是3,这是正确的。并不等同于除以2

9楼:月影低徊

移位只是对int型进行的操作。如果按是int型的计算,结果是正确的 。

10楼:温启勇思

左移就是把二进制数向左移动,右边补0,0的二进制全是0,左移之后右边再补0,移5和移6没区别

《后面的数字表示移多少位

c语言 左移 右移的问题 << 或 >>

11楼:匿名用户

左移 右移不会修改a本身

a=ox32 (16进制) 0011 0010b=a<<2

这个时候b=1100 1000 对

那么此时a=0011 0010

继续c=a<<2

请问c是在原来a的初值(ox32)上移动

这个时候c=1100 1000

12楼:围城

b=a<<2

这个时候b=1100 1000 对!

那么此时a=0011 0010 没变

接着c=a<<2

c是在原来a的初值上移动,因为a没变

c=b=1100 1000

最后c=b=1100 1000

a=0011 0010

13楼:匿名用户

a << 2 是不影响a 的值的,就像a +1不会把a值加1一样 。

a << 2只是一个表达式,返回的是表达式计算得到的值,其中并没有赋值(‘=’)操作啊。

c语言中的<<和>>左右移运算符有什么作用,谢谢!

14楼:匿名用户

左移运算符“

<<”是指将一个数的各个二进位全部左移若干位 左移的过程中右边则补0,高位溢出舍弃不用。一般情况下【不包括左移高位溢出舍弃的数中不包含1的情况】左移n位后,使该数变成原来数的2的n次方倍。右移相反

c语言中 怎样利用移位运算(左移和右移),实现a和b值的互换?? 5

15楼:匿名用户

不是移位运算,是位运算吧,使用异或运算。

void main()

16楼:流星花菜

这是一道题吗?还是楼主自己想的?

感觉只左移右移 有点难吖!

17楼:匿名用户

怎么说呢??如果是位运算,那得看你给的a和b的值,当然还要用到与或非之类的东西,网上应该有教程吧!!!如果就是交换,那就是楼上的!!!

18楼:梦之月光如水

冒泡?使用**段:

for(//互换条件)

不一定非要用for循环,也有其他的,for最好理解

大神能详细说说,c语言中右移,左移,按位或,是怎么用的?能给个例子?<< >> ^

19楼:城隍庙街景

int a=1;

a<<=1; // a=2

a>>=1; //a=1

a= a^a; //a=0

20楼:小黑跳大不解释

这怎么举例。。。你有什么不懂 我告诉你好了

c语言位运算里~、<<、>>、&、|、^、这些怎么用?

21楼:与鲤

按位与 | 按位或 ^

按位异或 ~ 取反 <<

左移 >> 右移<<

1. 按位与运算。按位与运算符"&"是双目运算符。

其功能是参与运算的两数各对应的二进位相与。只有对应的两个二进位均为1时,结果位才为1 ,否则为0。参与运算的数以补码方式出现。

2. 按位或运算。按位或运算符“|”是双目运算符。

其功能是参与运算的两数各对应的二进位相或。只要对应的二个二进位有一个为1时,结果位就为1。参与运算的两个数均以补码出现。

例如:9|5可写算式如下: 00001001|00000101 00001101 (十进制为13)可见9|5=13 main()

3. 按位异或运算。按位异或运算符“^”是双目运算符。

其功能是参与运算的两数各对应的二进位相异或,当两对应的二进位相异时,结果为1。参与运算数仍以补码出现,例如9^5可写成算式如下: 00001001^00000101 00001100 (十进制为12) main()。

5. 左移运算。左移运算符“<<”是双目运算符。

其功能把“<< ”左边的运算数的各二进位全部左移若干位,由“<<”右边的数指定移动的位数, 高位丢弃,低位补0。例如: a<<4 指把a的各二进位向左移动4位。

如a=00000011(十进制3),左移4位后为00110000(十进制48)。

C语言中移位运算的详细解释,c语言中移位运算

1楼 碳酸饮料拜拜哈 1 按位与 运算符 按位与是指 参加运算的两个数据,按二进制位进行 与 运算。如果两个相应的二进制位都为1,则该位的结果值为1 否则为0。 这里的1可以理解为逻辑中的true 0可以理解为逻辑中的false。按位与其实与逻辑上 与 的运算规则一致。逻辑上的 与 ,要求运算数全真...

c语言中的和两个运算符有什么区别

1楼 匿名用户 在c语言中,运算符 和运算符 所表示的意义不同。 是赋值运算符,它的含义是将右侧表达式的值赋给左侧的变量。 是关系运算符,如果两侧表达式的值相等,则其值为1,否则为0。 2楼 匿名用户 一个等号是赋值运算符,用于把等号右边的结果赋值给左边的变量 两个等号是判等运算符,用于判断等号左右...

符号在c语言中表示单一I O口和异或运算是怎样区分的

1楼 晨曦月殇 这个是这样区分的啊 你表示io口时是这样的 sbit p10 p1 0 是吧 有sbit呢 你玩抑或运算时一般是这样的 int xx 0xaf int yy 0xdf int cc xx yy 很明显吧,异或运算两边一般是变量。 当然 还有这种情况 int cc p10 0xff 这...