C语言移位运算符怎么用?
3个回答
展开全部
右移对符号位的处理和左移不同,对于有符号整数来说,比如int类型,右移会保持符号位不变,例如:10100110
>>5(假设字长为8位),则得到的是
11111101。
总之,在c中,左移是逻辑/算术左移(两者完全相同),右移是算术右移,会保持符号位不变.实际应用中可以根据情况用左/右移做快速的乘/除运算,这样会比循环效率高很多.
所以,short
a=0xf245,即a=1111001001000101,经过右移后,b=a>>8;b=1111111111110010,即b=0xfff2。注意是有符号右移为算术右移!!!
>>5(假设字长为8位),则得到的是
11111101。
总之,在c中,左移是逻辑/算术左移(两者完全相同),右移是算术右移,会保持符号位不变.实际应用中可以根据情况用左/右移做快速的乘/除运算,这样会比循环效率高很多.
所以,short
a=0xf245,即a=1111001001000101,经过右移后,b=a>>8;b=1111111111110010,即b=0xfff2。注意是有符号右移为算术右移!!!
展开全部
这是c++好吧。。。。算了c和c++的移位运算符都一样
这个难道不对吗,左移就是*2啊(不越界的话)
原理就是你把1110化成二进制(000010001010110),然后每个位都向左移一位,最低位补0,次高位舍弃(最高位是符号位,不能动)
这个难道不对吗,左移就是*2啊(不越界的话)
原理就是你把1110化成二进制(000010001010110),然后每个位都向左移一位,最低位补0,次高位舍弃(最高位是符号位,不能动)
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
位与
&
0
&
0 =
0
1
&
1
= 1
1
&
0 =
0
0
&
1=
0位或
|
0 |
0 =
0
1 |
1
= 1
1 |
0 = 1
0
|
1=
1位异或
^
0 ^
0
= 0
1
^
1
=
0
1
^
0
=
1
0
^
1
=
1将操作符两边的两个操作数按位对齐做运算。
&
0
&
0 =
0
1
&
1
= 1
1
&
0 =
0
0
&
1=
0位或
|
0 |
0 =
0
1 |
1
= 1
1 |
0 = 1
0
|
1=
1位异或
^
0 ^
0
= 0
1
^
1
=
0
1
^
0
=
1
0
^
1
=
1将操作符两边的两个操作数按位对齐做运算。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询