关于十进制转换16进制的问题

来源:百度知道 编辑:UC知道 时间:2024/06/04 18:17:50
我最近买了一本《C程序设计》来自学,做到第三章的习题,是第2题的第6小题,是把十进制的2483转换成16进制和8进制(补码),8进制我在计算后和参考答案是一样的,但是我在酸16进制时却不一样,我算的是2483 D=953 H,但是书本是的答案是963……
我的步骤是先算2进制原码,再求补码,是2483 D=0000100101010011 B,我是用2483依次除2取余数的方法算的,对于正数来说,补码和原码是一样的,然后转换成16进制,我是这么做的,先看地位:0011 B=3 H,0101 B=5 H,1001=9 H
也就是说我的答案是953 H
是我错了还是书本错了?
请指教~
同志们!我需要的是手算的过程啊~~

显然没搞懂什么叫“进制”!
也没搞懂bcd体制
没关系,再从头开始看。

是书本算错了,你是对的。
还想对“也没搞懂bcd体制 ”这句话给个评价,提问者的问题和BCD码是没有任何关系的。

2483 D = 100110110011 B =9B3 H
既然可以用电脑为什么不用WINDOWS计算器呢?
点查看--科学型,就可以完成16,10,8,2进制间的任意转化!

2483/2..............1
1241/2..............1
620/2...............0
310/2...............0
155/2...............1
77/2................1
38/2................0
19/2................1
9/2.................1
4/2.................0
2/2.................0
1/2.................1
从下向上,1001 1011 0011 显然你中间那4位算的有问题!

都错了。
2483D= 0000 1001 1011 0011
=9b3H
9b3 不是 963 ,也不是 953
我给你个C语言小程序,以后计算完后用它验算一下。

#include<stdio.h>

int main()
{
char c1;
char c2;
int a;
printf("请输入要转换的数据的类型 O八进制 D十进制 X十六进制 : \n");
printf("如: D X 十进制转十六进制\n");
scanf("%c %c",&c1,&c2);
if(c1=='O'||c1==&