gpt4 book ai didi

c - 在 C 中打印二进制字符

转载 作者:太空宇宙 更新时间:2023-11-04 01:33:46 24 4
gpt4 key购买 nike

出于对自己的爱,我无法弄清楚这段 C 代码背后的逻辑。

按理说,下面应该打印出一个unsigned char x的二进制表示,我们只允许填空。

void print_binary(unsigned char x) {
int b = 128;

while (__________________) {

if (b <= x) {
x -= b;
printf("1");
} else
printf("0");

______________________;
}
}

当然,我可以通过简单地忽略上面的行来玩这个程序。然而,我的印象是这并不是真正的做事方式(它更像是一种 hack)。

我的意思是现在,第一个条件检查 128 是否 <= char,但不是 unsigned char,什么,255 字节?那么为什么它只在其中打印'1'。

也许我遗漏了一些非常明显的东西(不是真正的 c 程序员),但这次我并没有理解逻辑。

谁能指出我正确的方向?如果你能在不完全说出答案的情况下给我一个线索,那就太好了。

最佳答案

void print_binary(unsigned char x) {
int b = 128;

while (b != 0) {

if (b <= x) {
x -= b;
printf("1");
} else
printf("0");

b = b >> 1;
}
}

b 的二进制表示是 10000000 .通过做 b >> 1并检查 b <= x我们可以检查 x 上的每一位是10 .

关于c - 在 C 中打印二进制字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18566744/

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