gpt4 book ai didi

c++ - BCD计算器问题

转载 作者:行者123 更新时间:2023-11-28 08:16:12 25 4
gpt4 key购买 nike

我正在将十六进制 0xE0 转换为 BCD。当我这样做时,我得到了 64。我知道这是完全错误的,也许这是我的 C++ 代码中的某些内容,但 64 听起来不正确。有任何想法吗? 0xE0 是特例吗? (0xE0 是十进制的 224。)

这是我的部分代码:

unsigned char Hex2BCD(unsigned char param)
{ unsigned char lo;
unsigned char hi;
unsigned char val;
unsigned char buf[10];

hi = param/ 10;
lo = param- (hi * 10);

val= (hi << 4) + lo;
return val;
}

最佳答案

我的想法是您转换为 BCD 的代码有问题。它没有按预期运行,因此您观察到的结果是错误的。

除了这个笑话:如果存储在 signed char 中,0xe0 是一个负数。如果您在计算结果时不特别注意正在使用的临时变量的符号,这可能会对您造成恶作剧。

编辑:既然您发布了一些代码,很明显,尽管您将第一个数字的正确值计算为 lo ,您需要另一个步骤才能将正确的值输入 hi .

使用 0xe0作为输入,您实际上是在计算 (22<<4) + 4 = 356 = 0x164而不是 (2<<8)+(2<<4)+4 = 548 = 0x224 .

关于c++ - BCD计算器问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7689803/

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