如何在C 中分析二进制数字

How can i analyse a binary number in c++

本文关键字:二进制数字      更新时间:2023-10-16

我有一个二进制号,例如 1011,我想将此数字拆分为以下数字:

  • 1000
  • 0000
  • 0010
  • 0001

这样,如果我应用(或(" |"操作员,它将产生原始数字:

1000 | 0000 | 0010 | 0001 = 1011

简单的位和带有带有您要设置为1的位置的掩码的数字。例如

uint8_t input;
uint8_t least_significant_digit = input & 1;

如有必要,您可以用循环产生它们。

uint8_t input;
uint8_t output[8];
for (int i = 0; i < 8; ++i) {
    int mask = 1 << (7 - i);  // most significant digit first as in the example
    output[i] = input & mask;
}

我希望我的名字比output更好,但我不知道这是什么。您可以根据实际需要多少位数字来播放循环条件的值。确保不要使其大于所讨论的类型。对于签名类型,您(理论上(使用此方法提取符号位,因为将位转移到标志位是不确定的行为。