十进制数怎么转换成16进制的数?

如题所述

以2

287/2=143......1(余数)
143/2=71........1
71/2=35..........1
35/2=17..........1
17/2=8...........1
8/2=4.............0
4/2=2.............0
2/2=1.............0
1/2=0.............1
倒过来写的余数就是100011111

.47
.47x2=0.94.....0(0是0.94的整数部分)
.94x2=1.88.....1
.88x2=1.76.....1
.76x2=1.52.....1
.52x2=1.04.....1
.04x2=0.08.....0
.08x2=0.16.....0
.16x2=0.32.....0
.32x2=0.64.....0
.64x2=1.28.....1
.28x2=0.56.....0
.56x2=1.12.....1
:
:
:
小数点顺着写就是 .011110000101
这个看就是无止境的,要看你需要的位数和你的储存空间,题目止到0
所以你的2进制是对的100011111.011110
==========================

287.47 的八进制 整数部分除以8,小数点乘以8

287/8=35......7
35/8=4..........3
4/8=0............4
余数倒过来写就是437

.47
.47x8=3.76....3(整数部分是3)
.76x8=6.08....6
.08x8=0.64....0
.64x8=5.12....5
.12x8=0.96....0
:
:
:
这个也是无止境的,小数点就是 .36050
八进制就是437.36050
==============================

287.47 的16进制 整数部分除以16,小数乘以16

287/16=17.....F(15)(余数)
17/16=1........1
1/16=0..........1
余数倒过来就是11F

.47
.47x16=7.52....7(整数部分是7)
.52x16=8.32....8
.32x16=5.12....5
.12x16=1.92....1
:
:
:
这也是无止境,小数就是 .7851
16进制就是11F.7851
=======================

如果你不会直接从二进制转化成8或者16进制,可以先把它们转成10进制的,或者画表格
Decimal ,Hexadecimal, Octal, Binary
0, 0, 0, 0000
1, 1, 1, 0001
2, 2, 2, 0010
3, 3, 3, 0011
4 ,4, 4, 0100
5, 5, 5, 0101
6, 6,6, 0110
7, 7, 7, 0111
8, 8, 10, 1000
9, 9, 11, 1001
10, a, 12, 1010
11, b, 13, 1011
12, c, 14, 1100
13, d, 15, 1101
14, e, 16 ,1110
15, f, 17, 1111

呵呵~我不知道你看不看得懂
另外,虚机团上产品团购,超级便宜
温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2018-03-07
直接除16,反向取余。如52转换成16进制。52/16=3……4,余数为4;接着3/16=0……3。所以转换的结果为34H。在比如把60536转换成16进制。60536/16=3783……8,3783/16=236……7,236/16=14……12,12对应16进制的C,14/16=0……14,14对应16进制的E,所以最终转换结果为EC78本回答被网友采纳
第2个回答  2018-12-25
十进制直接除十六,求余,直到商为零,从最后一个余数开始写,直到第一个余数。
第3个回答  2011-03-29
#include <stdio.h>
void aaa(int a,int b)
{
if(a==0)return;
aaa(a/b,b);
if(a%b>9) printf("%c",'A'+a%b-10);
else printf("%c",'0'+a%b);
}
main()
{
aaa(18,16);
}
第4个回答  2020-01-11
相似回答