C语言 十进制负数如何转换八、十六进制?

帮我把十进制数-617分别转换成八进制、十六进制的步骤写出来啊....谢谢了

可以先转换成二进制 617/2 308 余1
/2 154 余0
/2 77 余0
/2 38 余1
/2 19 余0
/2 9 余1
/2 4 余1
/2 2 余0
/2 1 余0
/2 0 余1
所以为 1001101001 取其的补码加1 就=-617 在换算为8 16进制
温馨提示:答案为网友推荐,仅供参考
第1个回答  2019-04-08
y=x[i]*pow(16,i).
这一句有问题。因为你输入的a,即现在的x,是一段字符串。需要先将字符串转换成数字,然后再进行运算,不然的话,系统会默认利用ascii值来进行运算,所以就出现了错误。
也可以改为y
=
(x[i]
-
48
)
*
pow(16,i).
第2个回答  2008-09-09
把负号变成1就可以了啊!就是在二进制的617前面加个1就可以了!
第3个回答  2008-09-09
学过计算机基础吗?
那里就有很好的表达式啊。
第4个回答  2008-09-09
用程序写还是用什么?具体点...貌似不算个问题啊