.C语言中,<<是什么意思
3个回答
2011-03-12
展开全部
C语言中,<<和>>是移位操作符,下面是网上的资料:
位移位运算符是将数据看成二进制数,对其进行向左或向右移动若干位的运算。位移位运算符分为左移和右移两种,均为双目运算符。第一运算对象是移位对象,第二个运算对象是所移的二进制位数。
移位时,移出的位数全部丢弃,移出的空位补入的数与左移还是右移花接木有关。如果是左移,则规定补入的数全部是0;如果是右移,还与被移位的数据是否带符号有关。若是不带符号数,则补入的数全部为0;若是带符号数,则补入的数全部等于原数的最左端位上的原数(即原符号位)。具体移位规则如下所示。
位移位运算符的优先级如下:
·算术运算符 优先于 位移位运算符 优先于 关系运算符
·位移位运算符是同级别的,结合性是自左向右
例如,设无符号短整型变量a为0111(对应二进制数为0000000001001001),
则:a<<3 结果为01110(对应二进制数为0000001001001000),a不变
a>>4 结果为04 (对应二进制数为0000000000000100),a不变
又如,设短整型变量a为-4(对应二进制数为1111111111111100),
则:a<<3 结果为-32(对应二进制数为1111111111100000),a不变
a>>4 结果为-1(对应二进制数为1111111111111111),a不变
位移位运算符是将数据看成二进制数,对其进行向左或向右移动若干位的运算。位移位运算符分为左移和右移两种,均为双目运算符。第一运算对象是移位对象,第二个运算对象是所移的二进制位数。
移位时,移出的位数全部丢弃,移出的空位补入的数与左移还是右移花接木有关。如果是左移,则规定补入的数全部是0;如果是右移,还与被移位的数据是否带符号有关。若是不带符号数,则补入的数全部为0;若是带符号数,则补入的数全部等于原数的最左端位上的原数(即原符号位)。具体移位规则如下所示。
位移位运算符的优先级如下:
·算术运算符 优先于 位移位运算符 优先于 关系运算符
·位移位运算符是同级别的,结合性是自左向右
例如,设无符号短整型变量a为0111(对应二进制数为0000000001001001),
则:a<<3 结果为01110(对应二进制数为0000001001001000),a不变
a>>4 结果为04 (对应二进制数为0000000000000100),a不变
又如,设短整型变量a为-4(对应二进制数为1111111111111100),
则:a<<3 结果为-32(对应二进制数为1111111111100000),a不变
a>>4 结果为-1(对应二进制数为1111111111111111),a不变
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询