C语言中j=j<<i;怎么理解啊?也就是<<这个符号怎么理解?
部分程序如下:for(i=7;i>=0;i--){j=j<<i;dio7289=X&j;j=1;j=1;clk7289=1;for(dealy=0;dealy<1;dea...
部分程序如下:
for(i=7;i>=0;i--)
{
j=j<<i;
dio7289=X&j;
j=1;j=1;clk7289=1;
for(dealy=0;dealy<1;dealy++) ; //延时10us
clk7289=0;
for(dealy=0;dealy<1;dealy++) ; //延时10us
} 展开
for(i=7;i>=0;i--)
{
j=j<<i;
dio7289=X&j;
j=1;j=1;clk7289=1;
for(dealy=0;dealy<1;dealy++) ; //延时10us
clk7289=0;
for(dealy=0;dealy<1;dealy++) ; //延时10us
} 展开
1个回答
展开全部
“<<”代表左移运算符(就相当于'shl')。该运算符为双目运算符,结合方向为从左到右,作用是把一个整型数的所有位向左移动指定的位数,移动到左边界之外的多余二进制位会被丢弃,并从右边界移入0。
左移运算的两个操作数应为整数类型。第一个操作数是要进行移位操作的数,第二个操作数指定第一个操作数移动的位数。如果第二个操作数等于0则不发生任何移位。
应用举例:
一,问:计算表达式14 << 2的值。
答:表达式14 << 2的值为56,因为14(即二进制的00001110)向左移两位等于56(即二进制的00111000)。
二,问: 计算表达式8 >> 2的值。
答:表达式8 >> 2的值为2,因为8(即二进制的00001000)向右移两位等于2(即二进制的00000010)。
摘自:百度百科
左移运算的两个操作数应为整数类型。第一个操作数是要进行移位操作的数,第二个操作数指定第一个操作数移动的位数。如果第二个操作数等于0则不发生任何移位。
应用举例:
一,问:计算表达式14 << 2的值。
答:表达式14 << 2的值为56,因为14(即二进制的00001110)向左移两位等于56(即二进制的00111000)。
二,问: 计算表达式8 >> 2的值。
答:表达式8 >> 2的值为2,因为8(即二进制的00001000)向右移两位等于2(即二进制的00000010)。
摘自:百度百科
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询