c语言程序中x>>=1是什么意思??
8个回答
展开全部
>>=:这是复合运算符
“>>”是双目移位运算符,其功能是把“>> ”左边的运算数的各二进位全部右移若干位,“>>”右边的数指定移动的位数。
例如:设 a=15(这是十进制,要把它转换为2进制数),a>>2表示把000001111右移为00000011(十进制3)。
扩展资料:
移位运算符有双目移位运算符:<<(左移)和>>(右移)。
C语言中移位运算符
位移位运算符
位移位运算符是将数据看成二进制数,对其进行向左或向右移动若干位的运算。位移位运算符分为左移和右移两种,均为双目运算符。第一运算对象是移位对象,第二个运算对象是所移的二进制位数。
参考资料来源:百度百科-右移运算符
展开全部
>>=:这是复合运算符
右移运算右移运算符
“>>”是双目运算符。其功能是把“>> ”左边的运算数的各二进位全部右移若干位,“>>”右边的数指定移动的位数。例如:设 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的值有变化,第一种情况没有变化
右移运算右移运算符
“>>”是双目运算符。其功能是把“>> ”左边的运算数的各二进位全部右移若干位,“>>”右边的数指定移动的位数。例如:设 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
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
c语言程序中x>>=1,如果作用于整数x,就是把x右移一位,把x的二进制值的最后一位丢弃,最高位补0。
实际就是把x的值除以2。在运算结果上等价于x=x/2。
实际就是把x的值除以2。在运算结果上等价于x=x/2。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这是移位运算的意思。
是位操作运算的一种。移位运算符有双目移位运算符:<<(左移)和>>(右移)。移位运算符组成的表达式也属于算术表达式,其值为算术值。左移运算是将一个二进制位的操作数按指定移动的位数向左移位,移出位被丢弃,右边的空位一律补0。右移运算是将一个二进制位的操作数按指定移动的位数向右移动,移出位被丢弃,左边移出的空位或者一律补0,或者补符号位,这由不同的机器而定。在使用补码作为机器数的机器中,正数的符号位为0,负数的符号位为1。
是位操作运算的一种。移位运算符有双目移位运算符:<<(左移)和>>(右移)。移位运算符组成的表达式也属于算术表达式,其值为算术值。左移运算是将一个二进制位的操作数按指定移动的位数向左移位,移出位被丢弃,右边的空位一律补0。右移运算是将一个二进制位的操作数按指定移动的位数向右移动,移出位被丢弃,左边移出的空位或者一律补0,或者补符号位,这由不同的机器而定。在使用补码作为机器数的机器中,正数的符号位为0,负数的符号位为1。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
x>>=1:是将X 以二进制形式表示,让各位向右移动1 位,左补0(逻辑右移1 位,相当于除 2 处理), 然后将结果仍存入X 中。
注:你的C 编译系统若默认为是算术位移,则是各位向右移动1 位,左补1. 用时要考查一下噢。
注:你的C 编译系统若默认为是算术位移,则是各位向右移动1 位,左补1. 用时要考查一下噢。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询