永发信息网

C语言请教 temp>>=(Offset);这条语句看不懂什么意思?请前辈们指教。是右移多少位?

答案:4  悬赏:30  手机版
解决时间 2021-04-23 22:49
  • 提问者网友:杀生予夺
  • 2021-04-23 08:57
unsigned char getbit(unsigned int address,unsigned char function)
{
unsigned char data Offset;
unsigned char data temp;
unsigned char data *Myaddress;
Offset=(char)address&0x07;
switch (function) //根据功能码不同进行相应处理
{
case 2:
Myaddress=DI;
break;
case 1:
Myaddress=DO;
break;
default:
return 2;
}
temp=(char)(address>>3);
temp=*(Myaddress+temp);
temp>>=(Offset);
if (temp&0x01)
return 1;
else
return 0;
}
最佳答案
  • 五星知识达人网友:笑迎怀羞
  • 2021-04-23 10:05
这要看你传入的address是多少
Offset=(char)address&0x07;
这里表示Offset是address与上0x07的结果
比如address=0x01,那么与上0x07就是1,就是右移1位(即除2)
0x07 => 0000 0111
0x01 => 0000 0001
全部回答
  • 1楼网友:煞尾
  • 2021-04-23 14:10
右移offset位(相当于除法) 再看看别人怎么说的。
  • 2楼网友:毛毛
  • 2021-04-23 12:36
temp>>=(Offset);等价于temp=temp>>(Offset);temp右移Offset位
  • 3楼网友:封刀令
  • 2021-04-23 11:21
">>"这是移位操作。 右移运算的两个操作数应为整数类型。第一个操作数是要进行移位操作的数,第二个操作数指定第一个操作数移动的位数。如果第二个操作数等于0则不发生任何移位。 应用举例: 问:计算表达式14 >> 2的值。 答:表达式14 >> 2的值为3,因为14(即二进制的0000temp>>=(Offset); //等价于temp = temp >> offset; 即将temp右移offset后的结果赋给temp,如果换算为数学为temp除以2的offset次方.
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯