首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >BCD计算器问题

BCD计算器问题
EN

Stack Overflow用户
提问于 2011-10-07 23:56:22
回答 1查看 442关注 0票数 0

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

下面是我的代码的一部分:

代码语言:javascript
复制
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;
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-10-08 00:00:06

我的想法是,您的代码转换为BCD是错误的。它没有做它应该做的事情,因此你观察到的结果是错误的。

除了这个笑话: 0xe0如果存储在有符号字符中是一个负数。如果你在计算结果时不特别注意你正在使用的临时变量的符号,这可能会给你带来一些恶作剧。

编辑:现在您已经发布了一些代码,很明显,尽管您在lo中计算了第一个数字的正确值,但是还需要另一个步骤才能将正确的值传递到hi中。

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7689803

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档