本文主要介绍 “C/C++ 左移<<, 右移>>作用”。
1. 左移 <<
取两个数字,左移第一个操作数的位,第二个操作数决定要移动的位置。换句话说,左移动一个整数
x
x
x 和一个整数
y
(
x
<
<
y
)
y (x<<y)
y(x<<y) 等于
x
x
x 乘以
2
y
2^y
2y
代码示例:
/* C++ Program to demonstrate use of left shift
operator */
#include<stdio.h>
int main()
{
// a = 5(00000101), b = 9(00001001)
unsigned char a = 5, b = 9;
// The result is 00001010
printf("a<<1 = %d\n", a<<1);
// The result is 00010010
printf("b<<1 = %d\n", b<<1);
return 0;
}
输出结果:
a<<1 = 10
b<<1 = 18
2. 右移 >>
取两个数字,向右移动第一个操作数的位,第二个操作数决定移动的位置。同样地,右平移
(
x
>
>
y
)
(x>>y)
(x>>y) 等于x除以
2
y
2^y
2y.
代码示例:
/* C++ Program to demonstrate use of right
shift operator */
#include<stdio.h>
using namespace std;
int main()
{
// a = 5(00000101), b = 9(00001001)
unsigned char a = 5, b = 9;
// The result is 00000010
printf("a>>1 = %d\n", a>>1);
// The result is 00000100
printf("b>>1 = %d\n", b>>1);
return 0;
}
输出结果:
a>>1 = 2
b>>1 = 4
3. 数字 1 1 1 左移 <<
1
1
1 <<
i
=
2
i
i = 2^i
i=2i 。 它只适用于正数。
代码示例:
#include<stdio.h>
int main()
{
int i = 3;
printf("pow(2, %d) = %d\n", i, 1 << i);
i = 4;
printf("pow(2, %d) = %d\n", i, 1 << i);
return 0;
}
输出结果:
pow(2, 3) = 8
pow(2, 4) = 16
总结:
注意事项: