c语言程序中x>>=1是什么意思??

 我来答
四舍五不入6
高粉答主

2019-11-14 · 醉心答题,欢迎关注
知道答主
回答量:147
采纳率:100%
帮助的人:2万
展开全部

>>=:这是复合运算符

“>>”是双目移位运算符,其功能是把“>> ”左边的运算数的各二进位全部右移若干位,“>>”右边的数指定移动的位数。

例如:设 a=15(这是十进制,要把它转换为2进制数),a>>2表示把000001111右移为00000011(十进制3)。

扩展资料:

移位运算符有双目移位运算符:<<(左移)和>>(右移)。

C语言中移位运算符

位移位运算符

位移位运算符是将数据看成二进制数,对其进行向左或向右移动若干位的运算。位移位运算符分为左移和右移两种,均为双目运算符。第一运算对象是移位对象,第二个运算对象是所移的二进制位数。

参考资料来源:百度百科-右移运算符

度伊人网络董事长
推荐于2017-09-30 · TA获得超过476个赞
知道小有建树答主
回答量:392
采纳率:50%
帮助的人:140万
展开全部
>>=:这是复合运算符

右移运算右移运算符
“>>”是双目运算符。其功能是把“>> ”左边的运算数的各二进位全部右移若干位,“>>”右边的数指定移动的位数。例如:设 a=15(这是十进制,要把它转换为2进制数),a>>2 表示把000001111右移为00000011(十进制3)。应该说明的是,对于有符号数,在右移时,符号位将随同移动。当为正数时,最高位补0,而为负数时,符号位为1,最高位是补0或是补1 取决于编译系统的规定。
例如:
#include "stdio.h"
void main()
{
unsigned int x=0x88888888;
x>>1;
printf("x=%#X\n",x);
}
//结果为:x=0X88888888
//然而
#include "stdio.h"
void main()
{
unsigned int x=0x88888888;
x>>=1;
printf("x=%#X\n",x);
}
//以下结果为:x=0X44444444
先把x向右移一位再赋值给x,所以x的值有变化,第一种情况没有变化

参考资料: http://baike.baidu.com/view/5113686.htm

本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
听不清啊
高粉答主

推荐于2017-09-01 · 说的都是干货,快来关注
知道顶级答主
回答量:7.8万
采纳率:89%
帮助的人:1.9亿
展开全部
c语言程序中x>>=1,如果作用于整数x,就是把x右移一位,把x的二进制值的最后一位丢弃,最高位补0。
实际就是把x的值除以2。在运算结果上等价于x=x/2。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
NoHow绝不
2013-01-01 · TA获得超过750个赞
知道小有建树答主
回答量:256
采纳率:100%
帮助的人:277万
展开全部
这是移位运算的意思。
是位操作运算的一种。移位运算符有双目移位运算符:<<(左移)和>>(右移)。移位运算符组成的表达式也属于算术表达式,其值为算术值。左移运算是将一个二进制位的操作数按指定移动的位数向左移位,移出位被丢弃,右边的空位一律补0。右移运算是将一个二进制位的操作数按指定移动的位数向右移动,移出位被丢弃,左边移出的空位或者一律补0,或者补符号位,这由不同的机器而定。在使用补码作为机器数的机器中,正数的符号位为0,负数的符号位为1。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
cunfu49
2013-01-01 · TA获得超过1528个赞
知道小有建树答主
回答量:829
采纳率:58%
帮助的人:232万
展开全部
x>>=1:是将X 以二进制形式表示,让各位向右移动1 位,左补0(逻辑右移1 位,相当于除 2 处理), 然后将结果仍存入X 中。

注:你的C 编译系统若默认为是算术位移,则是各位向右移动1 位,左补1. 用时要考查一下噢。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(6)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式