关于进制的4道题

来源:百度知道 编辑:UC知道 时间:2024/09/28 10:37:21
1. 把下列16进制数转换为2进制数
(1) A301H (2) 7EF.CH (3) 0.56F8H
2. 把下列10进制数转换为2进制数
(1) 67 (2) 255 (3) 1024 (4) 0.2 (5) 0.0625
(6) 218.875
3. 已知[x]原=11111000, [y]反=11111000, [z]补=11111000.试指出x,y,z中真值最大和最小者。
4. 将下列十进制数写成字长为16位的二进制原码、反码和补码。
+2, -64, +119, -256, 1000。

两个进制(其中之一为10进制)之间的互转(手工计算方法)
以2,10进制互转为例,其他请举一反三:
二进制数1101转十进制:
1×2的三次幂+1×2的二次幂+0×2的一次幂+1×2的零次幂=8+4+0+1=13
附加一个八进制转十进制的例子吧:
507(八进制转10进制):
5×8的2次幂+0×8的1次幂+7×8的0次幂=
5×64+0×8+7×1=327(10进制)

以上是小进制向大进制的转换,从2->10和8->10,下面说说大进制向小进制的转换。(方法是相除去余)
10进制327转八进制:
327/8 = 40 余数为7
40/8 = 5 余数为0
于是八进制数为507(第一位5是最后的商)
10进制13转2进制:
13/2 = 6 余数为1
6/2 = 3 余数为0
3/2 = 1 余数为1
所以对应的二进制数为1101(第一位1是最后的商)

再测试一下,把307(10进制)转换为16进制:
307/16 = 19 余数为3
19/16 = 1 余数为3
对应的16进制数应该是:133
再把133转回10进制:
1×16的2次幂+3×16的1次幂+3×16的零次幂
=256+48+3=307
(下面这个程序是把10进制转为需要的,相反的可以参照写出来)
#include <stdio.h>
void ex10to2();
void ex10to8();
void ex10to16();
void main()
{
int select;
do
{
printf("\n 0、退出 1、十进制~二进制 2、十进制~八进制 3、十进制~十六进制\n");
printf("请选择功能:");