数制转换问题(完整)
进制转换练习题带答案
![进制转换练习题带答案](https://img.taocdn.com/s3/m/21528f62366baf1ffc4ffe4733687e21af45ffa8.png)
进制转换练习题带答案一、十进制与二进制的转换(1) 25(2) 63(3) 102(4) 145(5) 189(1) 11011(2) 1010101(3) 11110000(4) 10011011(5) 11011101二、十进制与八进制的转换(1) 47(2) 123(3) 255(4) 365(5) 512(1) 57(2) 123(3) 456(4) 712(5) 754三、十进制与十六进制的转换(1) 79(2) 255(3) 439(4) 1023(5) 4095(1) 3F(2) FF(3) 1A3(4) AFE(5) FFF四、二进制与八进制的转换(1) 11011(2) 1010101(3) 11110000(4) 10011011(5) 11011101(1) 57(2) 123(3) 456(4) 712(5) 754五、二进制与十六进制的转换(1) 11011(2) 1010101(3) 11110000(4) 10011011(5) 11011101(1) 3F(2) FF(3) 1A3(4) AFE(5) FFF六、八进制与十六进制的转换(1) 57(2) 123(3) 456(4) 712(5) 754(1) 3F(2) FF(3) 1A3(4) AFE(5) FFF七、混合进制转换(1) 将八进制数 527 转换为十六进制数。
(2) 将二进制数 110101 转换为十进制数。
(3) 将十六进制数 2A 转换为二进制数。
(4) 将十进制数 198 转换为八进制数。
(5) 将二进制数 11110000 转换为十六进制数。
八、进制转换应用题(1) 如果一个十六进制数 1AB 表示的十进制数是多大?(2) 一个二进制数 1011 1110 转换为十进制后,再加上 25,结果是多少?(3) 将八进制数 765 转换为十进制数,然后除以 3,得到的商是多少?(4) 将十进制数 255 转换为二进制数,然后与二进制数11111111 进行按位与操作,结果是什么?(5) 将十进制数 100 转换为十六进制数,然后转换为二进制数,得到的二进制数是多少位?九、进制转换逻辑题(1) 十进制数 10 转换为二进制数是 1010。
算法与程序实践习题解答2(数制转换)
![算法与程序实践习题解答2(数制转换)](https://img.taocdn.com/s3/m/e1a4412fcfc789eb172dc8af.png)
CS
(来源:2973,程序设计导引及在线实践(李文新)例3.2P101)
问题描述:
在skew binary表示中,第k位的值xk表示xk*(2k+1-1)。每个位上的可能数字是0或1,最后面一个非零位可以是2,例如, 10120(skew) = 1*(25-1) + 0*(24-1) + 1*(23-1) + 2*(22-1)+0*(21-1) = 31 + 0 + 7 + 6 + 0 = 44.前十个skew数是0、1、2、10、11、12、20、100、101以及102。
在把skew二进制数转换成十进制时,只需把每位按权值展开求和即可。
参考程序2:
#include <stdio.h>
#include <string.h>
#include <math.h>
int main()
{
char str[40]; //读入的每个skew二进制数
while(scanf("%s",str)!=EOF)
样例输入:
本题没有输入。
样例输出:
2992
2993
2994
2995
2996
2997
2998
2999
...
解题思路:
该题在求解时要用到枚举的算法思想,即枚举所有的四位数(1000-9999),判断其是否满足十六进制、十二进制和十进制形式的各位数之和相等。
这里要注意进制转换方法。将一个十进制数Num转换到M进制,其方法是:将Num除以M取余数,直到商为0为止,存储得到的余数,先得到的余数为低位,后得到的余数为高位进行排序,余数0不能舍去。由于此题需要得到Num在16、12和10进制下各位的和,所以只要累加其余数即可。
进制转化练习题
![进制转化练习题](https://img.taocdn.com/s3/m/eafbfdd7a1116c175f0e7cd184254b35eefd1a2a.png)
进制转化练习题一、十进制转二进制1. 将十进制数25转换为二进制数。
2. 将十进制数102转换为二进制数。
3. 将十进制数47转换为二进制数。
4. 将十进制数128转换为二进制数。
5. 将十进制数345转换为二进制数。
二、十进制转八进制1. 将十进制数56转换为八进制数。
2. 将十进制数123转换为八进制数。
3. 将十进制数432转换为八进制数。
4. 将十进制数789转换为八进制数。
5. 将十进制数1024转换为八进制数。
三、十进制转十六进制1. 将十进制数255转换为十六进制数。
2. 将十进制数4096转换为十六进制数。
3. 将十进制数65535转换为十六进制数。
4. 将十进制数10000转换为十六进制数。
5. 将十进制数56转换为十六进制数。
四、二进制转十进制1. 将二进制数1101转换为十进制数。
2. 将二进制数101010转换为十进制数。
3. 将二进制数111111转换为十进制数。
4. 将二进制数1000000转换为十进制数。
5. 将二进制数101010101转换为十进制数。
五、八进制转十进制1. 将八进制数67转换为十进制数。
2. 将八进制数123转换为十进制数。
3. 将八进制数456转换为十进制数。
4. 将八进制数7654转换为十进制数。
5. 将八进制数5转换为十进制数。
六、十六进制转十进制1. 将十六进制数1A转换为十进制数。
2. 将十六进制数FF转换为十进制数。
3. 将十六进制数ABC转换为十进制数。
4. 将十六进制数DEF转换为十进制数。
5. 将十六进制数转换为十进制数。
七、二进制转八进制1. 将二进制数110101转换为八进制数。
2. 将二进制数111000转换为八进制数。
3. 将二进制数10101010转换为八进制数。
4. 将二进制数11001100转换为八进制数。
5. 将二进制数11110000转换为八进制数。
八、二进制转十六进制1. 将二进制数1101转换为十六进制数。
进制转换 练习题
![进制转换 练习题](https://img.taocdn.com/s3/m/27b06c8e8ad63186bceb19e8b8f67c1cfad6ee91.png)
进制转换练习题1. 将二进制数110101转换为八进制和十六进制。
答:二进制数110101转换为八进制:65,转换为十六进制:35。
2. 将十进制数347转换为二进制和十六进制。
答:十进制数347转换为二进制:101011011,转换为十六进制:15B。
3. 将八进制数57转换为二进制和十进制。
答:八进制数57转换为二进制:101111,转换为十进制:47。
4. 将十六进制数CD3转换为二进制和十进制。
答:十六进制数CD3转换为二进制:11001101011,转换为十进制:3283。
5. 将二进制数101010101转换为八进制和十进制。
答:二进制数101010101转换为八进制:2525,转换为十进制:341。
6. 将十进制数123转换为二进制和十六进制。
答:十进制数123转换为二进制:1111011,转换为十六进制:7B。
7. 将八进制数672转换为二进制和十进制。
答:八进制数672转换为二进制:110110010,转换为十进制:442。
8. 将十六进制数ABC转换为二进制和十进制。
答:十六进制数ABC转换为二进制:101010111100,转换为十进制:2748。
9. 将二进制数1110001转换为八进制和十六进制。
答:二进制数1110001转换为八进制:161,转换为十六进制:71。
10. 将十进制数567转换为二进制和十六进制。
答:十进制数567转换为二进制:1000110111,转换为十六进制:237。
11. 将八进制数426转换为二进制和十进制。
答:八进制数426转换为二进制:100100110,转换为十进制:278。
12. 将十六进制数FE0转换为二进制和十进制。
答:十六进制数FE0转换为二进制:11111110000,转换为十进制:4064。
以上是一些进制转换的练习题,通过这些题目的练习,可以加深对不同进制间的转换方法的理解和掌握。
进制转换在计算机科学、数学等领域中非常重要,熟练掌握进制转换可以提高问题解决的效率和准确性。
数制转换中的精度问题
![数制转换中的精度问题](https://img.taocdn.com/s3/m/2c3edb03dcccda38376baf1ffc4ffe473368fdd0.png)
,已知精度为±(0.1)
4 10
解: α=10,β=16,i=4 j 4 lg10 3.32 取 j=4
lg16
读 数 顺 序
(0.3021)10=(0.4D60)16
0.3021 × 16
(4).8336
× 16 (13).3776
× 16
(6).0416 × 16
(0).6656
⑵按题意要求
十进制换成其他进制
(2)小数的转换—— 基数乘法
规则:乘基取整, 满足精度要求为止, 顺序排列。
(1)整数的转换—— 基数除法
规则:除基取余, 商零为止,逆序排
列。
十进制数转换为其 他进制数时,可将 十进制数分为整数 和小数两部分进行。
[例] 将十进制数 (26.375)10 转换成二进制数
2 26 余数
2 13
0
26
1
读
23 21
0 1
数 顺 序
0
1
0.375
×2 0.750
整数 0
×2
读
1.500 ×2
1.000
1 1
数 顺 序
一直除到商为 0 为止
(26 .375)10 = (11010 .011) 2
小数的精度
等精度转换;⑵按题意要求
小数精度转换要求 ○ 若求出的是有限位小数,标明已求出准确的转换小数; ○ 若求出的是无限位小数,标明转换出的小数存在误差。
⑴等精度转换
设α进制有 i位小数,转换后β进制有 j位小数。
(0.0…01)α= (1×α-i)10 α位
(0.0…01)β = (1×β-j)10 β位
转换后应使: 1×β-j ≤1×α-i 即 αi ≤ βj
数制转换(含答案)
![数制转换(含答案)](https://img.taocdn.com/s3/m/4d80061610a6f524ccbf857d.png)
全国计算机等级考试一级——数制转换练习1)二进制数11000000对应的十进制数是A)384 B)192C)96 D)3202)二进制数1010.101对应的十进制数是A)11.33 B)10.625C)12.755 D)16.753)十进制整数100转换为二进制数是A)1100100B)1101000 C)1100010 D)11101004)八进制数345对应的十进制数是A)225 B)265 C)235 D)2295)与十进制数4625等值的十六进制数为A)1211B)1121 C)1122 D)12216)十进制数269转换为十六进制数为A)10E B)10D C)10C D)10B7)十六进制数1A2H对应的十进制数是A)418B)308 C)208 D)5788)与十六进制数26CE等值的二进制数是A)011100110110010 B)0010011011011110 C)10011011001110D)1100111000100110 9)二进制数10100101011转换成十六进制数是A)52B B)D45D C)23C D)5E10)二进制数1111101011011转换成十六进制数是A)1F5B B)D7SD C)2FH3 D)2AFH11)为了避免混淆,十六进制数在书写时常在后面加上字母A)H B)Q C)D D)B12)下列4种不同数制表示的数中,数值最小的一个是A)八进制数247 B)十进制数169 C)十六进制数A6D)二进制数10101000 13)与十进制数1023等值的十六进制数为A)3FDH B)3FFH C)2FDH D)3FFH14)16个二进制位可表示整数的范围是A)0~65535 B)-32768~32767C)-32768~32768 D)-32768~32767或0~6553515)下列4种不同数制表示的数中,数值最小的一个是A)八进制数52 B)十进制数44 C)十六进制数2B D)二进制数101001 16)有一个数是123,它与十六进制数53相等,那么该数值是A)八进制数B)十进制数C)五进制D)二进制数17)下列4种不同数制表示的数中,数值最大的一个是A)八进制数227 B)十进制数789C)十六进制数1FF D)二进制数1010001 18)下列4种不同数制表示的数中,数值最小的一个是A)八进制数36B)十进制数32 C)十六进制数22 D)二进制数10101100 19)下列4个无符号十进制整数中,能用8个二进制位表示的是A)257 B)201 C)313 D)296第 1 页共2 页20)计算机内部采用的数制是A)十进制B)二进制C)八进制D)十六进制21)下列4种不同数制表示的数中,数值最大的一个是A)八进制数110 B)十进制数71 C)十六进制数4A D)二进制数1001001 22)二进制数101101011转换为八进制数是A)553B)554 C)555 D)56323)一个非零无符号二进制整数后加两个零,新数的值是原数值的A)4倍B)2倍C)1/4 D)1/224)一个非零无符号二进制整数后加一个零,新数的值是原数值的A)4倍B)2倍C)1/4 D)1/225)如果删除一个非零无符号二进制偶数后的2个0,则此数的值为原数A)4倍B)2倍C)1/2 D)1/426)一个字长为5位的无符号二进数能表示的十进制数值范围是A)1~32 B)0~31C)1~31 D)0~3227)一个字长为8位的无符号二进数能表示的十进制数值范围是A)0~256 B)0~255C)1~256 D)1~25528)已知a=00111000B和b=2FH,则两者比较的正确不等式是A)a>b B)a=b C)a<b D)不能比较29)已知A=10111110B和B=AEH,C=184D,则关系成立的不等式是A)A<B<C B)B<C<A C)B<A<C D)C<B<A30)设任意一个十进制数D,转换成对应的无符号二进制数为B,那么就这两个数字的长度即位数)而言,B与D相比A)B的数字位数一定小于D的数字位数B)B的数字位数一定大于D的数字位数C)B的数字位数小于或等于D的数字位数D)B的数字位数大于或等于D的数字位数第 2 页共2 页。
完整版)进制转换练习题及答案
![完整版)进制转换练习题及答案](https://img.taocdn.com/s3/m/5a488cdf80c758f5f61fb7360b4c2e3f57272582.png)
完整版)进制转换练习题及答案1.这是一组进制转换的练题,第一题要求将一个十进制算术表达式的结果转换为二进制。
表达式为3*512+7*64+4*8+5,计算结果为2005,用二进制表示为xxxxxxxx101.因此,答案为B。
2.第二题要求将二进制数101.转换为十六进制。
首先将小数点前后的整数部分和小数部分分别转换为十六进制,得到5和A.51.将小数部分乘以16,得到0.816,将其转换为十六进制,得到0.C。
因此,答案为D,即5.58.3.第三题要求将十进制数2004转换为八进制。
用2004除以8,得到250余4,用250除以8,得到31余2,用31除以8,得到3余7,因此,2004的八进制表示为3724.因此,答案为B。
4.第四题要求计算一个十进制数和一个十六进制数的和,并将结果转换为十进制、十六进制和二进制。
将十进制数2004转换为十六进制,得到7D4,然后将其与十六进制数32相加,得到7D6.将7D6转换为十进制,得到2006,转换为二进制,得到xxxxxxxx010.因此,答案为D,即(xxxxxxxx0110)2.5.第五题要求将十进制数2006转换为十六进制。
用2006除以16,得到125余6,用125除以16,得到7余13,因此,2006的十六进制表示为7D6.因此,答案为A。
6.第六题要求将十进制数2003转换为二进制。
用2003除以2,得到1001余1,用1001除以2,得到500余1,用500除以2,得到250余0,用250除以2,得到125余0,用125除以2,得到62余1,用62除以2,得到31余0,用31除以2,得到15余1,用15除以2,得到7余1,用7除以2,得到3余1,用3除以2,得到1余1,用1除以2,得到0余1,因此,2003的二进制表示为xxxxxxxx011.因此,答案为AD。
7.第七题要求计算一个十进制数和一个八进制数的差,并将结果转换为十进制、十六进制和二进制。
第13章数制转换问题
![第13章数制转换问题](https://img.taocdn.com/s3/m/9a429e3de87101f69e319544.png)
//将base(8)进制数a转换成十进制数
考
int sum = 0;
// sum存放a对应的十制数
代
int len = strlen(a); //计算a的位数
码
int weight = 1;
//存放base进制数各位上的位权值
for(int i = len - 1;i >= 0;i--)
{
sum += (a[i]-'0')*weight;
考
int len = 0, r ; do
//存放mnum的下标,及d%m的值
代
{
码
r = d % m ; mnum[len++] = r + '0';
d /= m;
}while(d != 0);
mnum[len] = '\0';
char t;
for(int i = 0, j= len - 1 ; i < j; i++, j--)
weight *= base;
}
return sum;
}
函数int OcToDec(char *a , int base)
方法二:对a从高位(左)向低位(右)扫描各个位 上数字,对应秦九韶算法。初始sum = 0,然后每次 循环执行sum=sum*base+a[i]-'0';
函数参考代码如下:
//输入十进制数d
char Mnum[100];
//存放d对应的M进制数
DToM(d, M, Mnum);
//将十进制数d转换成八进制数,存在Mnum中
printf("%s\n", Mnum);
(完整版)计算机各种进制转换练习题(附答案)(最新整理)
![(完整版)计算机各种进制转换练习题(附答案)(最新整理)](https://img.taocdn.com/s3/m/4b6265753a3567ec102de2bd960590c69ec3d803.png)
(完整版)计算机各种进制转换练习题(附答案)(最新整理)进制转换练习题1.十进制数1000对应二进制数为______,对应十六进制数为______。
供选择的答案A:①1111101010 ②1111101000 ③1111101100 ④1111101110B:①3C8 ②3D8 ③3E8 ④3F82.十进制小数为0.96875对应的二进制数为______,对应的十六进制数为______。
供选择的答案A:①0.11111 ②0.111101 ③0.111111 ④0.1111111B:①0.FC ②0.F8 ③0.F2 ④0.F13.二进制的1000001相当十进制的______。
①62 ②63 ③64 ④654.十进制的100相当于二进制______,十六进制______。
供选择的答案A:①1000000 ②1100000 ③1100100 ④1101000B:①100H ②AOH ③64H ④10H5.八进制的100化为十进制为______,十六进制的100化为十进制为______。
供选择的答案A:①80 ②72 ③64 ④56B:①160 ②180 ③230 ④2566.十六进制数FFF.CH相当十进制数______。
①4096.3 ②4096.25 ③4096.75 ④4095.757.2005年可以表示为______?年。
①7C5H ②6C5H ③7D5H ④5D5H8.二进制数10000.00001将其转换成八进制数为______;将其转换成十六进制数为______。
供选择的答案A:①20.02 ②02.01③01.01 ④02.02B:①10.10 ②01.01 ③01.04 ④10.089.对于不同数制之间关系的描述,正确的描述为______。
供选择的答案A:①任意的二进制有限小数,必定也是十进制有限小数。
②任意的八进制有限小数,未必也是二进制有限小数。
③任意的十六进制有限小数,不一定是十进制有限小数。
数制转换(0.101)2=( 10= g= )16
![数制转换(0.101)2=( 10= g= )16](https://img.taocdn.com/s3/m/89b196c1ed3a87c24028915f804d2b160a4e8650.png)
数制转换(0.101)2=( 10= g= )16 数制转换是计算机科学中的基础知识之一。
它涉及将一个数字从一种数制表示转换为另一种数制表示。
在这个问题中,我们需要将一个二进制数0.101转换为十六进制数。
我们需要了解二进制和十六进制的表示方法。
二进制是一种基于2的数制,只包含0和1两个数字。
而十六进制是一种基于16的数制,它由0-9这10个数字和A-F这6个字母组成,其中A代表10,B代表11,以此类推。
要将二进制数转换为十六进制数,我们可以按照以下步骤进行:1.将二进制数按照每4位一组进行分组,从小数点开始向左和向右分组。
在这个例子中,我们可以将0.101分为"0."和"101"两部分。
2.对于小数点左边的部分,我们可以按照二进制转换为十六进制的规则进行转换。
在这个例子中,"0."对应的十六进制数为"0."。
3.对于小数点右边的部分,我们需要将每一组4位的二进制数转换为一个十六进制数字。
在这个例子中,"101"转换为十六进制数为"5"。
4.将左右两部分的结果合并,得到最终的十六进制数。
在这个例子中,0.101转换为十六进制数为0.5。
通过以上步骤,我们成功将二进制数0.101转换为十六进制数0.5。
这是数制转换的一个基本示例。
在实际应用中,数制转换经常用于计算机系统中的数据表示和处理。
让我们回顾一下二进制和十六进制的表示方法。
二进制是一种由0和1组成的数制,而十六进制是一种由0-9和A-F(或a-f)组成的数制。
在十六进制中,A表示10,B表示11,依此类推,直到F表示15。
二进制是现代计算机中最基本的数字表示方法。
它使用了两个数字0和1,这代表了计算机中的两种状态。
这是因为计算机中的电路和逻辑操作都是基于二进制的。
例如,在计算机内存中,每个存储单元都有一个位(bit),可以存储一个0或1。
数制转化练习题
![数制转化练习题](https://img.taocdn.com/s3/m/457df932a517866fb84ae45c3b3567ec102ddcc9.png)
数制转化练习题1. 将十进制数63转换为二进制数。
解答:首先,用2去除63,得到商31和余数1。
然后,用2去除31,得到商15和余数1。
再接着,用2去除15,得到商7和余数1。
最后,用2去除7,得到商3和余数1。
将余数从下往上排列,得到二进制数111111。
所以,十进制数63转换为二进制数为111111。
2. 将十进制数128转换为八进制数。
解答:首先,用8去除128,得到商16和余数0。
然后,用8去除16,得到商2和余数0。
最后,用8去除2,得到商0和余数2。
将余数从下往上排列,得到八进制数200。
所以,十进制数128转换为八进制数为200。
3. 将二进制数110110转换为十进制数。
解答:将二进制数110110转换为十进制数的步骤如下:从右往左,第一位为0,第二位为1,第三位为1,第四位为0,第五位为1,第六位为1。
根据二进制数的权重规则,第一位权重为2^0,第二位权重为2^1,第三位权重为2^2,第四位权重为2^3,第五位权重为2^4,第六位权重为2^5。
将每一位的值与其对应的权重相乘,然后将它们相加,即可得到十进制数的值。
所以,二进制数110110转换为十进制数为54。
4. 将八进制数235转换为十进制数。
解答:将八进制数235转换为十进制数的步骤如下:从右往左,第一位为5,第二位为3,第三位为2。
根据八进制数的权重规则,第一位权重为8^0,第二位权重为8^1,第三位权重为8^2。
将每一位的值与其对应的权重相乘,然后将它们相加,即可得到十进制数的值。
所以,八进制数235转换为十进制数为157。
5. 将十六进制数3A转换为二进制数。
解答:将十六进制数3A转换为二进制数的步骤如下:首先,将十六进制数3A的每一位分别转换为四位的二进制数。
3转换为二进制数0011,A转换为二进制数1010。
将转换后的二进制数拼接在一起,得到二进制数00111010。
所以,十六进制数3A转换为二进制数为00111010。
(完整版)计算机基础数制及其转换
![(完整版)计算机基础数制及其转换](https://img.taocdn.com/s3/m/57ddba037c1cfad6185fa72f.png)
1.2。
1数制及其转换教学目标1、理解数制,基数,位权的概念。
2、掌握R(八、十、十六)进制与二进制之间的转换教学重点、难点:R(八、十、十六)进制与二进制之间的转换教学过程:引入:一、数制数制:用一组固定的数字符号和一套通用的规则来表示数的方法。
如:十进制规定了10个数字,则十进制的基数就为10.数码:数制中固定的数字符号。
基数:数制中固定数字符号的个数。
如:十进制的基数是0~9。
位权:一个数码(即数字符号)处在不同的位置上所代表的值不同。
每个数码所表示的数值等于该数码乘以一个与数码所在位置相关的常数,这个常数叫做位权。
比如:3333.3,数码3,在十分位上表示0.3,在个位上表示为3,在十位上表示为30,在百位上表示为300,在千位上表示为3000 3333.3=3000+300+30+3=3*103+3*102+3*101+3*100 +3*10-1 这里个(100)、十(101)、百(102)、千(103),称为位权,位权的大小是以基数为底,数码所在位置序号为指数的整数次幂。
我们日常生活中通常采用十进制进行计数,而我们的电脑是采用二进制计数。
问:什么是十进制,它是如何构成的?(1)由0、1、2、3、4、5、6、7、8、9十个数码组成;(2)进位方法,逢十进一;(基数为10)(3)采用位权表示法,即一个数码在不同位置上所代表的值不同。
问:什么是二进制?引入二进制1、二进制代码的特征(构成)①由0、1两个数码组成;②进位方法,逢二进一;(基数为2)③位权大小为2—n…、2—1、20、21、22、…2n如11001,记为11001⑵= 1×24 + 1×24 + 3×22 +1×21 + 1×20通过按权位展开,就可以把二进制转化为十进制,这也是权位的妙处。
二、数制的转换1、R(二、八、十六)进制数向十进制的转换(用“按权相加"法)(76512。
[精华]数制之间的转换关系
![[精华]数制之间的转换关系](https://img.taocdn.com/s3/m/844e851291c69ec3d5bbfd0a79563c1ec4dad75b.png)
数制之间的转换关系1、二进制数、八进制数、十六进制数转十进制数公式:二进制数、八进制数、十六进制数的各位数字分别乖以各自的基数的(N-1)次方,其和相加之和便是相应的十进制数。
个位,N=1;十位,N=2...举例:110B=1*22+1*21+0*20 =4+2+0=6D110Q=1*82 +1*81 +0*80 =64+8+0=72D110H=1*162 +1*161 +0*160 =256+16+0=272D2、十进制数转二进制数、八进制数、十六进制数要将十进制转为各进制的方式,只需除以各进制的权值,取得其余数,第一次的余数当个位数,第二次余数当十位数,其余依此类推,直到被除数小于权值,最后的被除数当最高位数。
一、十进制转二进制如:55转为二进制2|5527――1 个位13――1 第二位6――1 第三位3――0 第四位1――1 第五位最后被除数1为第七位,即得110111二、十进制转八进制如:5621转为八进制8|5621702 ―― 5 第一位(个位)87 ―― 6 第二位10 ―― 7 第三位1 ――2 第四位最后得八进制数:12765Q三、十进制转十六进制如:76521转为十六进制16|765214726 ――5 第一位(个位)295 ――6 第二位18 ――6 第三位1 ――2 第四位最后得12AE9H3、二进制与十六进制.八进制一、二进制与十六进制的关系2进制 0000 0001 0010 0011 0100 0101 0110 011116进制 0 1 2 3 4 5 6 72进制 1000 1001 1010 1011 1100 1101 1110 111116进制 8 9 A(10) B(11) C(12) D(13) E(14) F(15)可以用四位数的二进制数来代表一个16进制,如3A H转为二进制为:3为0011,A 为1010,合并起来为00111010。
可以将最左边的0去掉得111010B右要将二进制转为16进制,只需将二进制的位数由右向左每四位一个单位分隔,将各单位对照出16进制的值即可。
(完整版)计算机各种进制转换练习题(附答案)(可编辑修改word版)
![(完整版)计算机各种进制转换练习题(附答案)(可编辑修改word版)](https://img.taocdn.com/s3/m/86b3fdf969eae009591bec7b.png)
进制转换练习题1.十进制数1000 对应二进制数为,对应十六进制数为。
供选择的答案A:①1111101010 ②1111101000 ③1111101100 ④1111101110B:①3C8 ② 3D8 ③ 3E8 ④ 3F82.十进制小数为0.96875 对应的二进制数为,对应的十六进制数为。
供选择的答案A:①0.11111 ② 0.111101 ③ 0.111111 ④ 0.1111111B:①0.FC ② 0.F8 ③ 0.F2 ④ 0.F13.二进制的1000001 相当十进制的。
① 62 ② 63 ③ 64 ④ 654.十进制的100 相当于二进制,十六进制。
供选择的答案A:①1000000 ② 1100000 ③ 1100100 ④ 1101000B:①100H ②AOH ③ 64H ④10H5.八进制的100 化为十进制为,十六进制的100 化为十进制为。
供选择的答案A:①80 ② 72 ③ 64 ④ 56B:①160 ② 180 ③ 230 ④ 2566.十六进制数FFF.CH 相当十进制数。
① 4096.3 ② 4096.25 ③ 4096.75 ④ 4095.757.2005 年可以表示为年。
① 7C5H ② 6C5H ③ 7D5H ④ 5D5H8.二进制数10000.00001 将其转换成八进制数为;将其转换成十六进制数为。
供选择的答案A:①20.02 ② 02.01 ③ 01.01 ④ 02.02B:①10.10 ② 01.01 ③ 01.04 ④ 10.089.对于不同数制之间关系的描述,正确的描述为。
供选择的答案A:①任意的二进制有限小数,必定也是十进制有限小数。
②任意的八进制有限小数,未必也是二进制有限小数。
③任意的十六进制有限小数,不一定是十进制有限小数。
④任意的十进制有限小数,必然也是八进制有限小数。
10.二进制整数1111111111 转换为十进制数为,二进制小数0.111111 转换成十进制数为。
数制转换练习-答案
![数制转换练习-答案](https://img.taocdn.com/s3/m/de3e31f37c1cfad6195fa7d9.png)
数制练习填空1. 两个8位二进制数10101011和01001011进行逻辑加的结果为 11101011 。
2. 十六进制数AB.CH对应的十进制数字是 171.75 。
3. 已知一个带符号整数的补码由两个1和六个0组成,则该补码能够表示的最小整数是-127 。
4. 二进制数10111000和11001010进行逻辑“与”运算,结果再与10100110进行逻辑“或”运算,最终结果的十六进制形式为(10101110 )。
5.Pentium处理器中的一个16位带符号整数,如果它的十六进制表示为FEDCH,那么它的十进制值为(-292)。
5. 对两个逻辑值1施行逻辑加操作的结果是1 。
6. .若A=1100,B=0010,A与B运算的结果是1110,则其运算可以是算术加,也可以是逻辑加判断1.每个十进制整数都可以精确的转换为二进制整数形式。
N2. 一个整数的补码就是其原码除符号位外取反加1。
Y单选1. 下面关于计算机中定点数与浮点数的一些叙述, 正确的是____B______A. 定点数只能表示纯小数B. 浮点数尾数越长, 数的精度就越高C. 定点数的数值范围一定比浮点数的数值范围大D. 定点数就是用十进制表示的数2. 下列有关" 权值" 表述正确的是____B______A. 权值是指某一数字符号在数的不同位置所表示的值的大小B. 二进制的权值是" 二", 十进制的权值是" 十"C. 权值就是一个数的数值D. 只有正数才有权值3. 下列有关" 基数" 表述正确的是____B______A. 基数是指某一数字符号在数的不同位置所表示的值的大小B. 二进制的基数是" 二”,十进制的基数是" 十"C. 基数就是一个数的数值D. 只有正数才有基数4. 十进制数"13", 用三进制表示为____C______A.lOlB.110C.111D.1125. 下列各数都是五进制数, 其中____B______对应的十进制数是偶数。
算法与程序实践习题解答2(数制转换)
![算法与程序实践习题解答2(数制转换)](https://img.taocdn.com/s3/m/e1a4412fcfc789eb172dc8af.png)
输入:
本题没有输入。
输出:
你的程序要求输出2992及其他更大的、满足要求的四位数(要求严格按升序输出),每个数占一行(前后都没有空行),整个输出以换行符结尾。输出中没有空行。输出中的前几行如样例输出所示。
用一个整型数组base[31],依次存储skew数最末位、倒数第2位、…..、第31位的基数值。使用这个数组,把每个skew数转换成对应的十进制数。
base[0] = 1
base[k] = 2k+1- 1 = 2 * (2k- 1) + 1 = 2 * base[k -1] + 1
参考程序1:
#include <stdio.h>
数制B中相邻数字的基数是等比关系,即:basei(1<=i<=m)可以表示成Ci-1,其中C是一个常量。将dndn-1dn-2... d1除以C,余数即为b1;将dndn-1dn-2... d1和C相除的结果再除以C,余数即为b2;…;直至计算出为bm止。
数制B中相邻数字的基数不等比。需要先判断dnd n-1d n-2 ... d1在数制B中需要的位数m,然后从高位到低位依次计算bm、bm-1、b m-2、...、b1。
while(tmp) //求十二进制的和
{
s12+=tmp%12;
tmp/=12;
}
if(s16!=s12) continue;
tmp=Num;
while(tmp)
{
s10+=tmp%10;
tmp/=10;
}
进制转换练习题(打印版)
![进制转换练习题(打印版)](https://img.taocdn.com/s3/m/9abb8242fe00bed5b9f3f90f76c66137ee064fe8.png)
进制转换练习题(打印版)# 进制转换练习题## 一、二进制转换为十进制1. 将二进制数 1011 转换为十进制数。
2. 将二进制数 11001 转换为十进制数。
3. 将二进制数 10101010 转换为十进制数。
## 二、十进制转换为二进制1. 将十进制数 23 转换为二进制数。
2. 将十进制数 45 转换为二进制数。
3. 将十进制数 255 转换为二进制数。
## 三、八进制转换为十进制1. 将八进制数 76 转换为十进制数。
2. 将八进制数 123 转换为十进制数。
3. 将八进制数 76543 转换为十进制数。
## 四、十进制转换为八进制1. 将十进制数 61 转换为八进制数。
2. 将十进制数 102 转换为八进制数。
3. 将十进制数 4096 转换为八进制数。
## 五、十六进制转换为十进制1. 将十六进制数 1A3 转换为十进制数。
2. 将十六进制数 2F4 转换为十进制数。
3. 将十六进制数 ABCD 转换为十进制数。
## 六、十进制转换为十六进制1. 将十进制数 371 转换为十六进制数。
2. 将十进制数 789 转换为十六进制数。
3. 将十进制数 65535 转换为十六进制数。
## 七、二进制与八进制互转1. 将二进制数 110101 转换为八进制数。
2. 将八进制数 37 转换为二进制数。
## 八、二进制与十六进制互转1. 将二进制数 11001011 转换为十六进制数。
2. 将十六进制数 3F 转换为二进制数。
## 九、十六进制与八进制互转1. 将十六进制数 1B2 转换为八进制数。
2. 将八进制数 47 转换为十六进制数。
## 十、综合转换练习1. 将二进制数 1101011 先转换为十进制,再转换为八进制。
2. 将十进制数 2019 先转换为十六进制,再转换为二进制。
3. 将八进制数 1234 先转换为十进制,再转换为十六进制。
注意:请同学们认真完成以上练习题,以加深对进制转换的理解和应用能力。
数制间的转换规则
![数制间的转换规则](https://img.taocdn.com/s3/m/353d7d806aec0975f46527d3240c844769eaa0c4.png)
数制间的转换规则1.十进制数与非十进制数之间的转换(1)十进制数转换成非十进制数把一个十进制数转换成非十进制数(基数记作R)分成两步.整数部分转换时采用“除R取余法”;小数部分转换时采用“乘R取整法”。
(2)非十进制数转换成十进制数非十进制数(基数记作R,第j个数位的位权记作R j)转换成十进制数的方法:按权展开求其和。
2.非十进制数之间的转换(1)二进制数与八进制数之间的转换①二进制数转换成八进制数的方法.以小数点分界,整数部分自右向左、小数部分自左向右,每三位一组,不足三位时,整数部分在高位左边补0,小数部分在低位右边补0,然后写出对应的八进制数码。
②八进制数转换成二进制数的方法:用八进制数码对应的三位二进制数代替八进制数码本身即可。
(2)二进制数与十六进制数之间的转换①二进制数转换成十六进制数的方法:以小数点分界,整数部分自右向左、小数部分自左向右,每四位一组,不足四位时,整数部分在高位左边补0,小数部分在低位右边补0,然后写出对应的十六进制数码。
②十六进制数转换成二进制数的方法:用十六进制数码对应的四位二进制数代替十六进制数码本身即可。
五、例题讲解例1 将十进制数59.625转换成二进制是。
(2000年题)(1)本题的正确思维及答案:一个十进制数转换成二进制数时,整数和小数部分要分别考虑。
另外,若能熟练记忆下表,利用二进制转换成十进制时的展开式,就可以直接写出对应的二进制数。
20 1 25 32 2-1 0.521 2 26 64 2-2 0.2522 4 27 128 2-3 0.12523 8 28 256 2-4 0.062524 16 29 512 2-5 0.03125答案:111011.101(2)学生易犯的错误:小数的转换方法不清楚及运算不熟练。
数制转换带例题 PPT
![数制转换带例题 PPT](https://img.taocdn.com/s3/m/619b78616529647d2628527e.png)
解: 2 5 B
、3 C
0010 0101 1011
、 0011 1100
即 (25B、3C)16 = (1001011011、001111)2
十六进制数与八进制数相互转化
以二进制数为中介 先将要转换的进制数化为二进制数,再转换成目的进制数
例 把( 7 3 ) 8 转化成十六进制数 解: ( 7 3 ) 8 =(111 011) 2 =( 00 11 1011) 2 =( 3 B ) 16
“进制数之间的转换”归纳复习
• 1、二进制→十进制 (按位权乘2的N-1次方)
• 2、八进制→十进制 (按位权乘8的N-1次方)
• 3、十六进制→十进制 (按位权乘16的N-1次方)
• 1、十进制→二进制 (整数部分除2取余, 小数部分乘2取整)
• 2、十进制→八进制 (整数部分除8取余, 小数部分乘8取整)
数制的概念
按进位的原则进行计数,称为进位计数制,简称数制。 不论是哪一种数制,其计数和运算都有共同的规律和
特点。 ⑴ 逢N进一 N是指数制中所需要的数字字符的总个数,称为基数。 如:0、1、2、3、4、5、6、7、8、9等10个不同的符 号来表示数值,这个10就是数字字符的总个数,也是十 进制的基数,表示逢十进一。 ⑵ 位权表示法 位权是指一个数字在某个固定位置上所代表的值,处 在不同位置上的数字所代表的值不同,每个数字的位 置决定了它的值或者位权。位权与基数的关系是:各 进位制中位权的值是基数的若干次幂。
• 说明:对一个既有整数又有小数部分的十进 制数,只要分别把整数部分和小数部分转换 成二进制即可 练习:将(215、675)10转换成二进制数
答案: (215)10=(11010111)2 (0、675)10=(0、1011)2
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数据结构课程设计题目名称:数制转换问题课程名称:数据结构学生姓名:学号:学院名称:指导教师:目录一.需求分析………………………………………………………二.概要设计………………………………………………………三.详细设计………………………………………………………四.调试测试………………………………………………………五.总结……………………………………………………………一.需求分析应用环境设定:生活中我们需要将M进制的数转换为我们所需要的进制,从键盘任意输入一个M进制的数,对其进行转换成其他三种进制的数,然后再从电脑中显示出来,最终得到我们的结果。
用户界面:命令行界面,根据自己的要求,对界面的提示进行操作,正确输入我们需要的数据。
输入方式:首先输入将转换的进制数,回车确认;然后输入确定的数据,回车确认;接着选择要转换为的进制数,回车确认。
输出方式:界面直接输出,启动程序后,按照界面提示,输入数据,直接回车确认,显示屏即输出我们的数据结果。
数据储存方式:全部在内存存放,不使用硬盘上的文件或其他数据源,程序执行过程中和结束后不保存数据。
程序功能:1.根据界面提示输入M进制数据。
2.对任意M进制数据实行非M进制的转换。
二.概要设计在此说明数据结构设计和关键的算法设计思想1.用数组实现该问题D2M()函数和M2D()函数是实现该问题的主要函数。
D2M()函数是实现十进制转换为其它进制的函数,它是将输入的十进制数x取首先对需要转换的进制M取余,然后再对其取整,接着通过递归调用D2M()函数依次将得到的整数部分依次先取余后取整,并将所得的余数依次存入一个数组中,然后逆向取出数组中的元素,即得到转换后的结果。
而M2D()函数则是实现其他进制M转换为十进制,并将其转换为非M进制的数。
M进制转十进制则是从该M进制数的最后一位开始算,依次列为第0、1、2…n位并分别乘以M的0、1、2…n次方,将得到的次方相加便得到对应的十进制数,再调用D2M()函数将其转换为非M进制的数。
⑴i,j,y,n,s,m,r,reminder,x是定义的全局变量,初始值都为0;⑵D2M(int g,int h)是实现十进制数转换为M进制数的函数;⑶M2D(int e)是实现M(仅指二进制数和八进制数)进制数转换为十进制数的函数,并在其中调用D2M(int g,int h)实现向非M进制数的转换;⑷H2D(int f)是实现十六进制数转换为十进制数的函数,并在其中调用D2M(int g,int h)实现向非十六进制数的转换;⑸void main()是主函数,功能是给出测试的数据,并在特定条件下调用D2M()函数和M2D()函数。
使用简单一维数组int a[N],int b[N],int c[N]。
2.用栈实现该问题同样是利用D2M()和M2D()两个函数实现。
两个函数的思想同利用数组实现时相同。
只是栈具有后进先出的性质,故其用Pop()取数较数组的逆向取数方便些。
⑴SqStack定义栈,说明base为栈底指针,top为栈顶指针,stacksize为栈容量;⑵int InitStack(SqStack &S)到int DestroyStack(SqStack &S)六大模块分别表示构造一个空栈、用e表示栈元素、插入元素、删除元素、判断栈是否为空以及摧毁栈;⑶SqStack S是指定义栈S;⑷D2M(int a,int b)的功能是将十进制数转换成M进制的函数;⑸M2D()的功能是M进制转换为十进制的函数;⑹void main()是主函数。
其功能是输入需要测试的数据以及需要转换的进制,并在特定情形下调用D2M()函数和M2D()函数,而且实现M进制数向任意非M进制数的转换。
数据类型定义如下:typedef struct{int *base; 栈底int *top; 栈顶int stacksize;栈容量}SqStack;int InitStack(SqStack &S)构造一个个空栈int GetTop(SqStack S, int &e) 若栈不为空,则用e返回S的栈顶元素,并返回0,否则返回1int Push(SqStack &S , int e) 插入元素e为新的栈顶元素int Pop(SqStack &S, int &e) 若栈不空,则删除S的栈顶元素,用e返回其值,并返回0,否则返回1。
1.程序流程图若2.程序源代码A.用数组实现(文件名shuzu.cpp)#include<stdio.h>#include<math.h>#define N 1000int i,j,y,n,s;int m,r,reminder;int x; //全局变量默认初始化为0,不必再赋0了D2M(int g,int h) //十进制数转换为其他进制数{int c[N];i=0;reminder=g%h;g=g/h;if(reminder>9){c[i]=reminder+55;i++;}else{c[i]=reminder;i++;}if(g>0)D2M(g,h);for(j=i-1;j>=0;j--)if(c[j]>=65)printf("%c",c[j]);elseprintf("%d",c[j]);return 0;}M2D(int e) //二进制和八进制数转换为十进制数,并这转换为其他进制数{int a[N];printf("请输入%d进制位数:",m);scanf("%d",&n);printf("请输入%d进制的每位并使每位用空格隔开:",m);for(i=0;i<n;i++)scanf("%d",&a[i]);for(i=n-1;i>=0;i--){y+=(int)pow(e,j)*a[i]; //强制类型转换,以免造成数据丢失j++;}printf("需要转换的进制M:");scanf("%d",&s);printf("请输出转换成%d进制的结果:",s);D2M(y,s);return 0;}H2D(int f) //十六进制数转换为十进制数,并转换为其他进制数{int b[N];printf("请输入%d进制位数:",m);scanf("%d",&n);printf("请输入%d进制的每位并使每位用空格隔开:",m);for(i=0;i<n;i++)scanf("%x",&b[i]);for(i=n-1;i>=0;i--){y+=(int)pow(f,j)*b[i]; //强制类型转换,以免造成数据丢失j++;}printf("需要转换的进制M:");scanf("%d",&s);printf("请输出转换成%d进制的结果:",s);D2M(y,s);return 0;}void main(){printf("请给定一个需转换的进制M(2or8or10or16):");scanf("%d",&m);if(m==2||m==8) //二进制和八进制转换成十进制M2D(m);else if(m==16) //十六进制转换成十进制H2D(m);else if(m==10) //十进制转换成其它进制{printf("请输入一个%d进制数:",m);scanf("%d",&x);printf("请输入需要转换成的进制M(2or8or16):");scanf("%d",&r);printf("请输出转换成%d进制的结果:",r);D2M(x,r);}printf("\n");}B.用栈实现(文件名zhan.cpp)#include<stdio.h>#include<malloc.h>#include<stdlib.h>#include<math.h>#define STACK_INIT_SIZE 100 //存储空间初始分配量#define STACKINCREMENT 10 //存储空间分配增量int e,m,x,s,t; //x为要转换的十进制数,e 为临时用的的int 型变量int r,y,i,n;typedef struct{int *base; //栈底int *top; //栈顶int stacksize; //栈容量}SqStack;int InitStack(SqStack &S){ //构造一个空栈S.base=(int *)malloc(STACK_INIT_SIZE *sizeof(int));if(!S.base) exit(0); //存储空间失败S.top=S.base;S.stacksize=STACK_INIT_SIZE;return 0;}int GetTop(SqStack S, int &e){ //若栈不为空,则用e返回S的栈顶元素,并返回0,否则返回1if(S.top==S.base) return 1;e=*(S.top-1);return 0;}int Push(SqStack &S , int e){ //插入元素e为新的栈顶元素if(S.top-S.base>=S.stacksize){ //栈满,追加存储空间S.base=(int *)realloc(S.base,(S.stacksize+STACKINCREMENT)*sizeof(int));if(!S.base) return 1 ; //存储分配失败S.top=S.base+S.stacksize;S.stacksize+=STACKINCREMENT;}*S.top++=e;return 0;}int Pop(SqStack &S, int &e){ //若栈不空,则删除S的栈顶元素,用e返回其值,并返回0,否则返回1if(S.top==S.base) return 1;e=*--S.top;return 0;}int StackEmpty(SqStack S){ //若栈空,则返回1,否则返回0 if(S.top==S.base)return 1;return 0 ;}int DestroyStack(SqStack &S){ //销毁栈S,栈S不再存在free(S.base);S.top=NULL; //防止程序后面不小心使用了它S.base=S.top;return 0 ;}SqStack S; //定义栈SD2M(int a,int b) //十进制转换成其他进制的函数D2M(){while(a){r=a%b;if(r>9)r=r+55;Push(S,r); //压入栈a/=b; //转换成M进制printf("该数转换成%d进制的结果:",b);while(!StackEmpty(S)){Pop(S,e); //弹出栈if(e>=65)printf("%c",e);elseprintf("%d",e);}return 0;}M2D() //其他进制转换为十进制的函数M2D() {char c[1000];printf("请输入需要转换的数的位数:");scanf("%d",&n);printf("请输入需要转换的数的每位并用空格隔开:");for(i=0;i<n;i++){scanf("%x",&c[i]);Push(S,c[i]);i=0;while(!StackEmpty(S)){Pop(S,e);y+=(int)pow(m,i)*e;i++;}}void main(){InitStack(S); //构造一个空栈printf("请输入需要转换的进制M(2or8or10or16):");scanf("%d",&m);if(m==10) //十进制转换成其他进制{printf("请给定一个需要转换的10进制数:");scanf("%d",&x);printf("请输入需要转换成的进制数:");scanf("%d",&t);D2M(x,t);}if(m==2||m==8||m==16) //其他进制转换成十进制,且其他任意进制的相互转换{M2D();printf("给定要转换成的进制M:");scanf("%d",&s);D2M(y,s);}printf("\n");DestroyStack(S); //销毁栈S,栈S不再存在}四.调试测试1.十进制数365转换二进制数测试结果如下:(图1)图12.十六进制数1A2B3C转换十进制数测试结果如下:(图2)图23.二进制数11001100转换八进制数测试结果如下:(图3)图34.八进制数1234转换为十六进制数测试结果如下:(图4)图4 五.总结此次课程设计与以往不同:第一,时间是比较紧的,从题目分配到完成设计不足十天的时间,而且又是即将期末考试的这段时间;第二,人数和以往也不同,以前都是几个同学一起完成设计,而这次却是每个人单独完成自己的题目,所以人手也是比较紧的;第三,以前的课程设计是最后完成提交就行了,而这次我们必须时刻都提交自己课程设计的进程,中途随时交给指导老师批阅,避免同学最后时间才去完成作业的思想。