一个负数在单片机c语言编程中如何拆分其个位和十位?并显示?单片机的c语言哦!

如果正数15,个位15%10=5,十位15/10=1,在送显示的时候是正常的。

但如果负数-15,将怎么分离呢?(-15)%10=?(-15)/10=?
我是在keil里编译的,烧到单片机,当为负数时,显示异常。求指教!!!

C一般是补码形式保存,所以要先判断正负,
if(x<0)X是你的数据 如果是负数就取反-1,这里我不大确定了,你试试减1还是+1
{
x=~x;
x=x-1;
}追问

加一,减一,还是显示乱码,不知道怎么回事?换成正15就能显示成功!

追答

不是,我的上面只是检测你这个X数据是负数就给你转换成正数,后面在吧这个X/10 X%10这样

温馨提示:内容为网友见解,仅供参考
第1个回答  2013-09-29
如果负数,取其绝对值,在按正数拆分个位和十位
第2个回答  2013-09-29
因为数字是按照补码存储的, 假如是-15,它的补码应该是0xF1,对它进行取反就是E,E就是15,
然后再做处理。
第3个回答  2013-09-29
专门留一位表示符号吧,另两位取绝对值再进行十进制化吧。。。
不然显示不了的
第4个回答  2013-09-29
int temp, temp1, temp2;
if (x < 0)
{
temp = -x

temp1 = temp / 10;

temp2 = temp % 10;

}
这样应该可以吧
相似回答