gpt4 book ai didi

c++ - Arduino 代码 : shifting bits seems to change data type from int to long

转载 作者:搜寻专家 更新时间:2023-10-31 02:17:10 25 4
gpt4 key购买 nike

在我的 Arduino 上,以下代码产生了我不理解的输出:

void setup(){
Serial.begin(9600);
int a = 250;

Serial.println(a, BIN);
a = a << 8;
Serial.println(a, BIN);
a = a >> 8;
Serial.println(a, BIN);


}

void loop(){}

输出是:

11111010
11111111111111111111101000000000
11111111111111111111111111111010

我确实理解第一行:前导零没有打印到串行终端。但是,在移动位后,a 的数据类型似乎已从 int 更改为 long(打印出 32 位)。预期的行为是位向左移动,而从 int 具有的 16 位中“移出”的位被简单地丢弃。将位移回不会再次将“32 位”变量变为“16 位”。

移动 7 个或更少的位置不会显示这种效果。

我可能应该说我没有使用 Arduino IDE,而是来自 https://github.com/sudar/Arduino-Makefile 的 Makefile .

这是怎么回事?我几乎希望这是“正常的”,但我不明白。还是打印例程中的某些东西只是将 16 个“1”添加到输出?

恩诺

最佳答案

除了其他答案外,整数可能以 16 位或 32 位存储,具体取决于您拥有的 arduino。

关于c++ - Arduino 代码 : shifting bits seems to change data type from int to long,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36044770/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com