在 c 中使用位输出

  • 本文关键字:输出 c binary
  • 更新时间 :
  • 英文 :


我不得不说w = 33的程序输出是什么。我不知道该怎么做。有没有人知道如何在不编写每个数字的二进制表示的情况下解决这个问题?

void notChicken(int w) 
{
unsigned int v1 = 0x12345678;
unsigned int v2 = 0x87654785;
unsigned int v3 = 0xffffffff;
unsigned int tmp;
tmp = (v1 >> 3) | (v2 << 3);
tmp &= v3 & ~(v3 << (w >> 1));
printf("%8xn", tmp);
}

谢谢

虽然不是一个好主意,但让我们尝试分解您的操作。

你已经给了w = 33

最后一部分——

v3 & ~(v3 << (w >> 1))将评估为v3 & ~(v3 << 16)

v3 << 160xffff0000,其中~0xffff

因为v3都是你得到0xffff.这将屏蔽先前计算的前 16 位。

现在(v1 >> 3) | (v2 << 3);

我们只关心较低的 16 位。

>> 3

除以8,<< 3乘以 8。

所以第一部分的结果将是

0x2468ACF | 0x3B2A3C28

仅保留较低的 16 位

0x8ACF | 0x3C28

最后,我不知道您将如何在不编写按位表示的情况下执行OR。我可以帮忙处理最后一个十六进制。这将是F.

最新更新