gpt4 book ai didi

C BitWise - "1 << (num - 1)"和 "|="有什么作用?

转载 作者:太空狗 更新时间:2023-10-29 16:00:58 29 4
gpt4 key购买 nike

您能告诉我 convertLedNumberToBit 和 LedDriver_TurnOn 的作用吗?我不明白 1 << (num - 1) 发生了什么和 |=

static uint16_t * ledsAddress;

static uint16_t convertLedNumberToBit(int ledNumber)
{
return 1 << (ledNumber - 1);
}
void LedDriver_TurnOn(int ledNumber)
{
*ledsAddress |= convertLedNumberToBit(ledNumber);
}

最佳答案

<<是按位向左移动。 uint16_t1二进制是0b0000000000000001 , 所以当你向左移动数量 ledNumber-1 , 结果是 uint16_t将单个位设置为 ledNumber 指定的位置.

来自变量名ledNumber ,我猜这个函数会设置一个特定的 LED 来工作。

|对传递给它的两个操作数执行按位或运算。

例如,

byte b = 0x0A | 0x50;

如果您查看 0x0A 的底层位和 0x50 , 他们是 0b000010100b01010000分别。当与 OR 运算符组合时,结果在 b 中是0b01011010 , 或 0x5A十六进制。

|=是按位或赋值。 |=类似于 += 这样的运算符和 -=因为它将对两个操作数执行按位或,然后将结果存储在左侧运算符中。

byte b = 0x0A;
b |= 0x50;

// after this b = 0x5A

关于C BitWise - "1 << (num - 1)"和 "|="有什么作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40551598/

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