小编osi*_*ixy的帖子

位移 - 移位移位值

我试图做一个更长的功能,但它的行为非常奇怪.我试图找出问题所在,我已经找到了这个有缺陷的部分.

这个程序是为Arduino制作的,但这种现象可能出现在其他环境中.我试图进行大量搜索,但我找不到解决方案.

所以,我的马车部分:

为什么这两个代码不能给出相同的结果?
如何在没有额外变量的情况下构建单行函数,
但是像"代码1"一样操作?

结果:

  • 代码1:0b00101100
  • 代码2:0b01101100

源代码:


代码1 :(正确操作,但不是一行)

#include <binary.h>

const byte value=B00110110;
byte buffer,result;

void setup(){
  Serial.begin(115200);

  buffer = (value << 3);
  result = (buffer >> 2);

  Serial.println(result,BIN);
}

void loop(){
}
Run Code Online (Sandbox Code Playgroud)

它给出:0b00101100


代码2 :(不正确的操作,但一行)

#include <binary.h>

const byte value=B00110110;
byte result;

void setup(){
  Serial.begin(115200);

  result = ((value << 3) >> 2);

  Serial.println(result,BIN);
}

void loop(){
}
Run Code Online (Sandbox Code Playgroud)

它给出:0b01101100


c++ bit-manipulation arduino bit-shift shift

3
推荐指数
1
解决办法
933
查看次数

标签 统计

arduino ×1

bit-manipulation ×1

bit-shift ×1

c++ ×1

shift ×1