搜档网
当前位置:搜档网 › 二进制,八进制,十进制,十六进制之间的转换算法

二进制,八进制,十进制,十六进制之间的转换算法

二进制,八进制,十进制,十六进制之间的转换算法
二进制,八进制,十进制,十六进制之间的转换算法

二进制,八进制,十进制,十六进制之间的转换算法

一、十进制与二进制之间的转换

(1)十进制转换为二进制,分为整数部分和小数部分

①整数部分

方法:除2取余法,即每次将整数部分除以2,余数为该位权上的数,而商继续除以2,余数又为上一个位权上的数,这个步骤一直持续下去,直到商为0为止,最后读数时候,从最后一个余数读起,一直到最前面的一个余数。下面举例:

例:将十进制的168转换为二进制

得出结果将十进制的168转换为二进制,(10101000)2

分析:第一步,将168除以2,商84,余数为0。

第二步,将商84除以2,商42余数为0。

第三步,将商42除以2,商21余数为0。

第四步,将商21除以2,商10余数为1。

第五步,将商10除以2,商5余数为0。

第六步,将商5除以2,商2余数为1。

第七步,将商2除以2,商1余数为0。

第八步,将商1除以2,商0余数为1。

第九步,读数,因为最后一位是经过多次除以2才得到的,因此它是最高位,读数字从最后的余数向前读,即10101000

(2)小数部分

方法:乘2取整法,即将小数部分乘以2,然后取整数部分,剩下的小数部分继续乘以2,然后取整数部分,剩下的小数部分又乘以2,一直取到小数部分

为零为止。如果永远不能为零,就同十进制数的四舍五入一样,按照要求保留多少位小数时,就根据后面一位是0还是1,取舍,如果是零,舍掉,如果是1,向入一位。换句话说就是0舍1入。读数要从前面的整数读到后面的整数,下面举例:

例1:将0.125换算为二进制

得出结果:将0.125换算为二进制(0.001)2

分析:第一步,将0.125乘以2,得0.25,则整数部分为0,小数部分为0.25;

第二步, 将小数部分0.25乘以2,得0.5,则整数部分为0,小数部分为0.5;

第三步, 将小数部分0.5乘以2,得1.0,则整数部分为1,小数部分为0.0;

第四步,读数,从第一位读起,读到最后一位,即为0.001。

例2,将0.45转换为二进制(保留到小数点第四位)

大家从上面步骤可以看出,当第五次做乘法时候,得到的结果是0.4,那么小数部分继续乘以2,得0.8,0.8又乘以2的,到1.6这样一直乘下去,最后不可能得到小数部分为零,因此,这个时候只好学习十进制的方法进行四舍五入了,但是二进制只有0和1两个,于是就出现0舍1入。这个也是计算机在转换中会产生误差,但是由于保留位数很多,精度很高,所以可以忽略不计。

那么,我们可以得出结果将0.45转换为二进制约等于0.0111

上面介绍的方法是十进制转换为为二进制的方法,需要大家注意的是:

1)十进制转换为二进制,需要分成整数和小数两个部分分别转换

2)当转换整数时,用的除2取余法,而转换小数时候,用的是乘2取整法

3)注意他们的读数方向

因此,我们从上面的方法,我们可以得出十进制数168.125转换为二进制为10101000.001,或者十进制数转换为二进制数约等于10101000.0111。

(3)二进制转换为十进制不分整数和小数部分

方法:按权相加法,即将二进制每位上的数乘以权,然后相加之和即是十进制数。例

将二进制数101.101转换为十进制数。

得出结果:(101.101)2=(5.625)10

大家在做二进制转换成十进制需要注意的是

1)要知道二进制每位的权值

2)要能求出每位的值

二、二进制与八进制之间的转换

首先,我们需要了解一个数学关系,即23=8,24=16,而八进制和十六进制是用这

关系衍生而来的,即用三位二进制表示一位八进制,用四位二进制表示一位十六进制数。接着,记住4个数字8、4、2、1(23=8、22=4、21=2、20=1)。现在我们来练习二进制与八进制之间的转换。

(1)二进制转换为八进制

方法:取三合一法,即从二进制的小数点为分界点,向左(向右)每三位取成一位,接着将这三位二进制按权相加,得到的数就是一位八位二进制数,然后,按顺序进行排列,小数点的位置不变,得到的数字就是我们所求的八进制数。如果向左(向右)取三位后,取到最高(最低)位时候,如果无法凑足三位,可以在小数点最左边(最右边),即整数的最高位(最低位)添0,凑足三位。例

①将二进制数101110.101转换为八进制

得到结果:将101110.101转换为八进制为56.5

②将二进制数1101.1转换为八进制

得到结果:将1101.1转换为八进制为15.4

(2)将八进制转换为二进制

方法:取一分三法,即将一位八进制数分解成三位二进制数,用三位二进制按权相加去凑这位八进制数,小数点位置照旧。例:

①将八进制数67.54转换为二进制

因此,将八进制数67.54转换为二进制数为110111.101100,即110111.1011

大家从上面这道题可以看出,计算八进制转换为二进制

首先,将八进制按照从左到右,每位展开为三位,小数点位置不变

然后,按每位展开为22,21,20(即4、2、1)三位去做凑数,即a×22+ b×21 +c×20=该位上的数(a=1或者a=0,b=1或者b=0,c=1或者c=0),将abc排列就是该位的二进制数接着,将每位上转换成二进制数按顺序排列

最后,就得到了八进制转换成二进制的数字。

以上的方法就是二进制与八进制的互换,大家在做题的时候需要注意的是

1)他们之间的互换是以一位与三位转换,这个有别于二进制与十进制转换

2)大家在做添0和去0的时候要注意,是在小数点最左边或者小数点的最右边(即整数的最高位和小数的最低位)才能添0或者去0,否则将产生错误

三、二进制与十六进制的转换

方法:与二进制与八进制转换相似,只不过是一位(十六)与四位(二进制)的转换,下面具体讲解

(1)二进制转换为十六进制

方法:取四合一法,即从二进制的小数点为分界点,向左(向右)每四位取成一位,接着将这四位二进制按权相加,得到的数就是一位十六位二进制数,然后,按顺序进行排列,小数点的位置不变,得到的数字就是我们所求的十六进制数。如果向左(向右)取四位后,取到最高(最低)位时候,如果无法凑足四位,可以在小数点最左边(最右边),即整数的最高位(最低位)添0,凑足四位。

①例:将二进制11101001.1011转换为十六进制

得到结果:将二进制11101001.1011转换为十六进制为E9.B

②例:将101011.101转换为十六进制

因此得到结果:将二进制101011.101转换为十六进制为2B.A

(2)将十六进制转换为二进制

方法:取一分四法,即将一位十六进制数分解成四位二进制数,用四位二进制按权相加去凑这位十六进制数,小数点位置照旧。

①将十六进制6E.2转换为二进制数

因此得到结果:将十六进制6E.2转换为二进制为01101110.0010即110110.001

四、八进制与十六进制的转换

方法:一般不能互相直接转换,一般是将八进制(或十六进制)转换为二进制,然后再将二进制转换为十六进制(或八进制),小数点位置不变。那么相应的转换请参照上面二进制与八进制的转换和二进制与十六进制的转

五、八进制与十进制的转换

(1)八进制转换为十进制

方法:按权相加法,即将八进制每位上的数乘以位权,然后相加之和即是十进制数。

例:①将八进制数67.35转换为十进制

(2)十进制转换为八进制

十进制转换成八进制有两种方法:

1)间接法:先将十进制转换成二进制,然后将二进制又转换成八进制

2)直接法:前面我们讲过,八进制是由二进制衍生而来的,因此我们可以采用与十进制转换为二进制相类似的方法,还是整数部分的转换和小数部分的转换,下面来具体讲解一下:①整数部分

方法:除8取余法,即每次将整数部分除以8,余数为该位权上的数,而商继续除以8,余数又为上一个位权上的数,这个步骤一直持续下去,直到商为0为止,最后读数时候,从最后一个余数起,一直到最前面的一个余数。

②小数部分

方法:乘8取整法,即将小数部分乘以8,然后取整数部分,剩下的小数部分继续乘以8,然后取整数部分,剩下的小数部分又乘以8,一直取到小数部分为零为止。如果永远不能为零,就同十进制数的四舍五入一样,暂取个名字叫3舍4入。

例:将十进制数796.703125转换为八进制数

解:先将这个数字分为整数部分796和小数部分0.703125

整数部分

小数部分

因此,得到结果十进制796.703125转换八进制为1434.55

上面的方法大家可以验证一下,你可以先将十进制转换,然后在转换为八进制,这样看得到的结果是否一样

六、十六进制与十进制的转换

十六进制与八进制有很多相似之处,大家可以参照上面八进制与十进制的转换自己试试这两个进制之间的转换。

十进制数与十六进制数的转换方法

若十进制数23785转为十六进制,则用23785/16=1486余9,1486/16=92余14,92/16=5余12,5/16=0余5,十六进制中,10对应为a、11对应为b、。。。。。。、15对应为f,再将余数倒写为5ce9,则十进制23785=十六进制5ce9 十六进制数的第0位的权值为16的0次方,第1位的权值为16的1次方,第2位的权值为16的2次方…… 所以,在第N(N从0开始)位上,如果是是数X (X 大于等于0,并且X小于等于15,即:F)表示的大小为X * 16的N次方。 假设有一个十六进数2AF5, 那么如何换算成10进制呢? 用竖式计算:2AF5换算成10进制: 第0位:5 * 16^0 = 5 第1位:F * 16^1 = 240 第2位:A * 16^2 = 2560 第3位:2 * 16^3 = 8192 + ------------------------------------- 10997 直接计算就是: 5 * 16^0 + F * 16^1 + A * 16^2 + 2 * 16^3 = 10997 二进制的1101转化成十进制 1101(2)=1*2^0+0*2^1+1*2^2+1*2^3=1+0+4+8=13 转化成十进制要从右到左用二进制的每个数去乘以2的相应次方不过次方要从0开始 十进制转二进制:用2辗转相除至结果为1 将余数和最后的1从下向上倒序写就是结果例如302 302/2 = 151 余0 151/2 = 75 余1 75/2 = 37 余1 37/2 = 18 余1 18/2 = 9 余0 9/2 = 4 余1 4/2 = 2 余0 2/2 = 1 余0 1/2 = 0 余1 故二进制为100101110 二进制转八进制 在把二进制数转换为八进制表示形式时,对每三位二进制位进行分组,应该从小数点所在位置分别向左向右划分,若整数部分倍数不是3的倍数,可以在最高位前面补若干个0;对小数部分,当其位数不是的倍数时,在最低位后补若干个0.然后从左到右把每组的八进制码依次写出,即得转换结果. 你算一下就知道了啊比如110=2^2+2+0=6 二进制转十六进制 要将二进制转为16进制,只需将二进制的位数由右向左每四位一个单位分隔,分的不够的前边补零,用四位数的二进制数来代表一个16进制。转换表如下,括号内为十六进制 0000(0)0001 (1)0010 (2)0011 (3)0100 (4)0101 (5)0110 (6)0111 (7)1000 (8)1001 (9)1010(A)1011 (B)

计算机考试中各种进制转换的计算方法

二进制数第0位的权值是2的0次方,第1位的权值是2的1次方…… 所以,设有一个二进制数:0110 0100,转换为10进制为: 下面是竖式: 0110 0100 换算成十进制 第0位 0 * 20 = 0 第1位 0 * 21 = 0 第2位 1 * 22 = 4 第3位 0 * 23 = 0 第4位 0 * 24 = 0 第5位 1 * 25 = 32 第6位 1 * 26 = 64 第7位 0 * 27 = 0 + --------------------------- 100 用横式计算为: 0 * 20 + 0 * 21 + 1 * 22 + 1 * 23 + 0 * 24 + 1 * 25 + 1 * 26 + 0 * 27 = 100 0乘以多少都是0,所以我们也可以直接跳过值为0的位: 1 * 2 2 + 1 * 2 3 + 1 * 25 + 1 * 26 = 100 2.2 八进制数转换为十进制数 八进制就是逢8进1。 八进制数采用 0~7这八数来表达一个数。

八进制数第0位的权值为8的0次方,第1位权值为8的1次方,第2位权值为8的2次方…… 所以,设有一个八进制数:1507,转换为十进制为: 用竖式表示: 1507换算成十进制。 第0位 7 * 80 = 7 第1位 0 * 81 = 0 第2位 5 * 82 = 320 第3位 1 * 83 = 512 + -------------------------- 839 同样,我们也可以用横式直接计算: 7 * 80 + 0 * 81 + 5 * 82 + 1 * 83 = 839 结果是,八进制数 1507 转换成十进制数为 839 2AF5换算成10进制: 第0位: 5 * 160 = 5 第1位: F * 161 = 240 第2位: A * 162 = 2560 第3位: 2 * 163 = 8192 +

十进制数与十六进制数的转换方法

一,十进制转换十六进制 若十进制数23785转为十六进制,则用 23785/16=1486余9, 1486/16=92余……14, 92/16=5余………….12, 5/16=0余……………..5,十六进制中,10对应为a、11对应为b、。。。。。。、15对应为f,再将余数倒写为5ce9,则十进制23785=十六进制5ce9 二,十六进制转换十进制 十六进制数的第0位的权值为16的0次方,第1位的权值为16的1次方,第2位的权值为16的2次方…… 所以,在第N(N从0开始)位上,如果是是数X (X 大于等于0,并且X小于等于15,即:F)表示的大小为X * 16的N次方。 假设有一个十六进数2AF5, 那么如何换算成10进制呢? 用竖式计算:2AF5换算成10进制: 第0位:5 * 16^0 = 5 第1位:F * 16^1 = 240 第2位:A * 16^2 = 2560 第3位:2 * 16^3 = 8192 直接计算就是: 5 * 16^0 + F * 16^1 + A * 16^2 + 2 * 16^3 = 10997 三,二进制的1101转化成十进制 1101(2)=1*2^0+0*2^1+1*2^2+1*2^3=1+0+4+8=13 转化成十进制要从右到左用二进制的每个数去乘以2的相应次方不过次方要从0开始 十进制转二进制:用2辗转相除至结果为1 将余数和最后的1从下向上倒序写就是结果例如302 302/2 = 151 余0 151/2 = 75 余1 75/2 = 37 余1 37/2 = 18 余1 18/2 = 9 余0 9/2 = 4 余1 4/2 = 2 余0 2/2 = 1 余0 1/2 = 0 余1 故二进制为100101110 四,二进制转八进制 在把二进制数转换为八进制表示形式时,对每三位二进制位进行分组,应该从小数点所在位置分别向左向右划分,若整数部分倍数不是3的倍数,可以在最高位前面补若干个0;对小数部分,当其位数不是的倍数时,在最低位后补若干个0.然后从左到右把每组的八进制码依次写出,即得转换结果. 你算一下就知道了啊比如110=2^2+2+0=6 五,二进制转十六进制 要将二进制转为16进制,只需将二进制的位数由右向左每四位一个单位分隔,分的不够的前边补零,用四位数的二进制数来代表一个16进制。转换表如下,括号内为十六进制 0000(0)0001(1)0010(2)0011(3)0100(4)0101(5) 0110(6)0111(7)1000(8)1001(9)1010(A)1011(B) 1100(C)1101(D)1110(E)1111(F) 例如:10101011划分为1010 1011,根据转换表十六进制为AB

高中信息技术基础进制转换二进制十进制十六进制转换转化

2进制数转换为10进制 (110)2转化为十进制 10进制整理转换成2进制 于是,结果是余数的倒排列,即为: (37)10=(a5a4a3a2a1a0)2=(100101)2 16进制转化成2进制、2进制转化成16进制 (二进制和十六进制的互相转换比较重要。不过这二者的转换却不用计算,每个C,C++程序员都能做到看见二进制数,直接就能转换为十六进制数,反之亦然。) 16进制转化成2进制:每一位十六进制数对应二进制的四位,逐位展开。 二进制数转为十六进制:将二进制数转换成十六进制数是将二进数的整数部分从右向左每四位一组,每一组为一位十六进制整数,不足四位时,在前面补0 (FB)16=(1111 ,1011)2 互转

2进制与16进制的关系: 2进制0000 0001 0010 0011 0100 0101 0110 0111 16进制0 1 2 3 4 5 6 7 2进制1000 1001 1010 1011 1100 1101 1110 1111 16进制8 9 A B C D E F 可以用四位数的二进制数来代表一个16进制,如3A16 转为二进制为: 3为0011,A 为1010,合并起来为00111010。可以将最左边的0去掉得1110102 右要将二进制转为16进制,只需将二进制的位数由右向左每四位一个单位分隔,将各单位对照出16进制的值即可。 16进制数转换为10进制数 假设有一个十六进数 2AF5, 那么如何换算成10进制呢? 用竖式计算: 2AF5换算成10进制: 直接计算就是: 5 * 16^0 + F * 16^1 + A * 16^2 + 2 * 16^3 = 10997 (别忘了,在上面的计算中,A表示10,而F表示15) 假设有人问你,十进数 1234 为什么是一千二百三十四? 你尽可以给他这么一个算式: 1234 = 1 * 10^3 + 2 * 10^2 + 3 * 10^1 + 4 * 10^0 如十进制数2039 它可以表示为:2*10^3+0*10^2+3*10^1+9*10^0

java 十进制数转换为二进制,八进制,十六进制数的算法

java ê?????êy×a???a?t????,°?????,ê?áù????êyμ???·¨ using System; using System.Collections.Generic; using https://www.sodocs.net/doc/702866837.html,ponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; namespace ExDtoB { public partial class Form1 : Form { public Form1() { InitializeComponent(); } //ê?????×a?t?? public string DtoB(int d) { string b = ""; //?D????êyè?1?D?óú2£??ò?±?óê?3? if (d < 2) { b = d.ToString(); } else { int c; int s = 0; int n = d; while (n >= 2) { s++; n = n / 2; } int[] m = new int[s]; int i = 0; do

{ c = d / 2; m[i++] = d % 2; d = c; } while (c >= 2); b = d.ToString(); for (int j = m.Length - 1; j >=0; j--) { b += m[j].ToString (); } } return b; } //ê?????×a°????? public string DtoO(int d) { string o = ""; if (d < 8) { o = d.ToString(); } else { int c; int s=0; int n=d; int temp = d; while (n >= 8) { s++; n = n / 8; } int[] m = new int[s]; int i = 0; do { c = d / 8; m[i++] = d % 8; d = c; } while (c >= 8); o = d.ToString();

1十六进制数1000转换成十进制数是____

自测题6 一、选择题(每题2分,共60分) 1、十六进制数1000转换成十进制数是:____ (A) 4096 (B) 01024(C) 2048 (D) 8192 2、内存储器可与微处理器____交换信息 (A) 不能(B) 间接(C) 部分(D) 直接 3、3英寸的软盘,写保护窗口上有一个滑块,将滑块推向一侧,使写保护窗口暴露出来,此时:____ (A) 只能写盘,不能读盘(B) 只能读盘,不能写盘(C) 既可读盘,又可写盘(D) 不能读盘,也不能写盘 4、在微型计算机中,下列设备属于输入设备的是:____ (A) 打印机(B) 显示器(C) 软盘(D) 键盘 5、目前使用的防杀病毒软件的作用是:____ (A) 检查计算机是否感染病毒,清除已感染的任何病毒(B) 杜绝病毒对计算机的侵害(C) 检查计算机是否感染病毒,清除部分已感染的病毒(D) 查出已感染的任何病毒,清除部分已感染的病毒 6、鼠标是微机的一种:____ (A) 输出设备(B) 输入设备(C) 存储设备(D) 运算设备 7、在当前盘当前目录下有一个文件,其内容为: CD\ MD\XYZ\AB\B\C CD XYZ\AB\B 如果首先执行上述文件,并且在执行过程中没有错误发生,则接着执行的下列命令中,不会发生错误的是:____ (A) MD C (B) CD AB(C) RD C (D) RD B

8、为向用户提供方便、快捷的操作,可在根目录下设置可执行文件的搜索路径,这时应使用____命令。 (A) CD(CHDIR)(B) MD(MKDIR)(C) TREE (D) PATH 9、汉字国际码(GB2312-80)规定的汉字编码,每个汉字用:____ (A) 一个字节表示(B) 二个字节表示(C) 三个字节表示(D) 四个字节表示 10、查看磁盘卷标的DOS命令是:____ (A) VER (B) DIR (C) VERIFY (D) VOL 11、检查指定驱动器上文件、目录以及文件分配表(FAT),并产生一个报告,同时还显示未使用的内存数量。该DOS命令是:____ (A) CHDIR (B) CHKDSK (C) DISKCOMP(D) ECHO 12、拷贝一张软盘上的内容到另一张软盘上去的DOS命令是:____ (A) XCOPY (B) DISKCOPY(C) COPY (D) BACKUP 13、DOS文件名对字符的选用是有限制的。下列四个字符中,哪个能够作为一个文件的文件名中的第一个字符:____ (A) .(小数点)(B) $ (C) * (D) 14、C语言中,int类型数据占2个字节,则long类型数据占字节数:____ (A) 1(B) 2(C) 4(D) 8 15、若int类型数据占两个字节,则下列语句的输出为:____ (A) -1,-1 (B) -1,32767(C) -1,32768(D) -1,65535 int k=-1; printf("%d,%u\n",k,k); 16、若有定义:char *p1,*p2,*p3,*p4,ch;则不能正确赋值的程序语句为:____ (A) p1=&ch; scanf("%c", p1); (B) p2=(char*)malloc(1); scanf("%c", p2);(C) p3=getchar(); (D) p4=&ch; *p4=getchar(); 17、与以下定义等价的是:____int *p[4];

各种进制之间转换方法

各进制转换方法(转载) 一、计算机中数的表示: 首先,要搞清楚下面3个概念 ?数码:表示数的符号 ?基:数码的个数 ?权:每一位所具有的值 请看例子: 数制十进制二进制八进制十六进制 数码0~9 0~1 0~7 0~15 基10 2 8 16 权10o,101,102,…2o,21,22,…8o,81,82,…16o,161,162,…特点逢十进一逢二进一逢八进一逢十六进一 十进制4956= 4*103+9*102 +5*101+6*10o 二进制1011=1*23+0*22 +1*21+1*2o 八进制4275=4*83+2*82 +7*81+5*8o 十六进制81AE=8*163+1*162 +10*161+14*16o

二、各种进制的转换问题 1.二、八、十六进制转换成十进制 2.十进制转换成二、八、十六进制 3.二进制、八进制的互相转换 4.二进制、十六进制的互相转换 1、二、八、十六进制转换成十进制 方法:数码乘以相应权之和 2、十进制转换成二、八、十六进制 方法:连续除以基,直至商为0,从低到高记录余数

3、二进制、八进制的互相转换 方法: ?二进制转换成八进制:从右向左,每3位一组(不足3位左补0),转换成八进制 ?八进制转换成二进制:用3位二进制数代替每一位八进制数 例(1101001)2=(001,101,001)2=(151)8 例 (246)8=(010,100,110)2=(10100110)2 4、二进制、十六进制的互相转换 方法: ?二进制转换成十六进制:从右向左,每4位一组(不足4位左补0),转换成十六进制 ?十六进制转换成二进制:用4位二进制数代替每一位十六进制数 例(11010101111101)2=(0011,0101,0111,1101)2=(357D)16 例 (4B9E)16=(0100,1011,1001,1110)2=(100101110011110)2 三、各种进制数的运算

十六进制数转换成十进制数C语言

十六进制数转换成十进制数C语言 程序代码: #include #include #include /*求字符串长度函数*/ int strlengh(char *s) { int i; for(i=0;s[i]!='\0';i++); return i; } /*16进制转10进制函数*/ double tran(char *s) { int len=strlengh(s);/*求输入的字符串的长度*/ int ss[100] ;/*用于存放对字符的转换如f:15*/ int i; double n=0.0; /*对字符进行处理,将其每一位转换为整数,之后运算进行处理*/ for(i=0;i

进制十进制八进制十六进制转换练习题

进制十进制八进制十六进制转换练习题 TTA standardization office【TTA 5AB- TTAK 08- TTA 2C】

数制及相互转换 进制表示形式R代表任意进制 二进制 B R→十:按权展开求和二→八:三位变一位 八进制O (Q) 十→R:除R取余倒排二→十六:四位变一位 十进制 D 八→二:一位变三位 十六进制H 十六→二:一位变四位 一、单选题 1、下列数据中数值最小的是 A、01110000B B、249D C、125Q D、AAH 2、下列数据中数值最大的是 A、3FH B、64D C、77Q D、111110B 3、下列数据中数值最大的是 A、100H B、100D C、100Q D、100B 4、十进制数24转换成二进制数是 A、11100 B、11010 C、11000 D、10100 5、下列数据中数值最小的是 6、下列数据中数值最大的是 7、下列各数中最大的是 A、 B、D7 H C、214D D、325Q 8、与二进制数100101等值的十进制数是 A、34 B、35 C、36 D、37 9、与十进制数256等值的二进制数是 A、 1000000 B、 C、 D、

10、与十六进制数ACE等值的十进制数是 A、2766 B、 2765 C、2764 D、 2763 11、十六进制数111与八进制数111之和,用八进制数表示为 A、 310 B、 1222 C、 1000 D、 532 12、按某种进制运算2 × 4=12,那么4 × 5为 A、20 B、32 C、24 D、 12 13、若216是某种数制的一个数,它的值与十六进制数8E相等,则该数是()进制数。 A、六 B、八 C、九 D、十 14、下列各数中,属于合法的五进制数的是 A、216 B、 123 C、 354 D、189 15、下列无符号十进制中,能用8位二进制表示的是 A、 257 B、 288 C、 256 D、255 16、无符号二进制数后加上一个0,形成的数是原来的几倍 A、 1 B、 2 C、 1/2 D、4 17、下列数据中数值最大的是 A、(10000)2 B、(17)8 C、(17)10 D、(10)16 18、某学校有1500名学生,若用二进制来编学号,需要多少位来表示。 A、 10 B、 11 C、12 D、13 19、十进制数153转换成二进制数应为 A、 BC、 D、1110110

c语言 十六进制和十进制间的转换

1.将十六进制转换为十进制. #include #include int main(void){ int convert(int,char *); int i,j; char m[20]; printf("请输入你要转换的数:"); scanf("%s",m); i=0; while(*(m+i)!='\0'){ i++; } j=convert(--i,m); printf("转换为十进制是:%d\n",j); return 0; } int convert(int a,char *p){ int i,j,sum; sum=0; for(i=0;i<=a;i++){ if(*(p+i)<='f'&&*(p+i)>='a') j=(int)(*(p+i))-87; else if(*(p+i)<='F'&&*(p+i)>='A') j=(int)(*(p+i))-55; else j=(int)(*(p+i))-48; sum=sum+pow(16,a-i)*j; } return (sum); }

2.将十进制转换为十六进制. #include int main(void) { int i,a[20],m,m_old; char c; i=0; printf("请输入你要转换的数:"); scanf("%d",&m); m_old=m; while(m!=0){ a[i]=m%16; m/=16; i++; } i--; /*for(;i>=0;i--){ printf("%d ",*(a+i)); }*/ printf("%d转换为十六进制是:",m_old); for(;i>=0;i--){ /*switch(a[i]){ case(10):printf("A");break; case(11):printf("B");break; case(12):printf("C");break; case(13):printf("D");break; case(14):printf("E");break; case(15):printf("F");break; default: printf("%d",a[i]);

进制数与十六进制数的转换方法完整版

进制数与十六进制数的 转换方法 HEN system office room 【HEN16H-HENS2AHENS8Q8-HENH1688】

若十进制数23785转为十六进制,则用23785/16=1486余9,1486/16=92余14, 92/16=5余12, 5/16=0余5,十六进制中,10对应为a、11对应为b、。。。。。。、15对应为f,再将余数倒写为5ce9,则十进制23785=十六进制5ce9 的第0位的为16的,第1位的为16的1次方,第2位的为16的2次方…… 所以,在第N(N从0开始)位上,如果是是数 X (X 大于等于0,并且X小于等于 15,即:F)表示的大小为 X * 16的N次方。 假设有一个十六进数 2AF5, 那么如何换算成10进制呢? 用: 2AF5换算成10进制: 第0位: 5 * 16^0 = 5 第1位: F * 16^1 = 240 第2位: A * 16^2 = 2560 第3位: 2 * 16^3 = 8192 + ------------------------------------- 10997 直接计算就是: 5 * 16^0 + F * 16^1 + A * 16^2 + 2 * 16^3 = 10997 二进制的1101转化成十进制 1101(2)=1*2^0+0*2^1+1*2^2+1*2^3=1+0+4+8=13 转化成十进制要从右到左用二进制的每个数去乘以2的相应次方不过次方要从0开始 :用2辗转相除至结果为1 将余数和最后的1从下向上倒序写就是结果例如302 302/2 = 151 余0 151/2 = 75 余1 75/2 = 37 余1 37/2 = 18 余1 18/2 = 9 余0 9/2 = 4 余1 4/2 = 2 余0 2/2 = 1 余0 1/2 = 0 余1 故二进制为 二进制转 在把转换为表示形式时,对每三位二进制位进行分组,应该从小数点所在位置分别向左向右划分,若整数部分倍数不是3的倍数,可以在最高位前面补若干个0;对小数部分,当其位数不是的倍数时,在最后补若干个0.然后从左到右把每组的码依次写出,即得转换结果. 你算一下就知道了啊比如110=1*2^2+1*2^1+0*2^0=6 比如: 1001110分组001 001 110 001=0*2^2+0*2^1+1*2^0=1 001=0*2^2+0*2^1+1*2^0=1 110=1*2^2+1*2^1+0*2^0=6 结果为116 二进制转 要将二进制转为16进制,只需将二进制的位数由右向左每四位一个单位分隔,分的不够的前边补零,用四位数的来代表一个16进制。转换表如下,括号内为

用栈实现把十进制转化为八进制

#include #include #define STACK_INIT_SIZE 100 #define STACKINCREMENT 10 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(-1); s.top=s.base; s.stacksize=STACK_INIT_SIZE; return 1; } int Pop(sqstack &s,int &e) { if(s.top==s.base) return 0; e=*--s.top; return 1; } int Push(sqstack &s,int e) { if(s.top-s.base==s.stacksize) { s.base=(int *)realloc(s.base,(s.stacksize+STACKINCREMENT)*sizeof(int)); if(!s.base) exit(-1); s.top=s.base+s.stacksize; s.stacksize+=STACKINCREMENT; } *s.top++=e; return 1; } int StackEmpty(sqstack s) { if(s.top==s.base) return 0; else return 1; }

数据结构 栈十进制转八进制的算法详解(已测试过)

实验目的 建立栈实现十进制转八进制 实验内容 编程序并上机调试运行。 建立栈实现十进制转八进制 1.编写程序 //十进制转八进制 #include #include #include #define STACK_INIT_SIZE 100 #define STACKINCREMENT 10 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; }//构造一个空栈s int push(sqstack *s,int e) { if((s->top-s->base)>=s->stacksize){ s->base=(int*)realloc(s->base,(s->stacksize + STACKINCREMENT )*sizeof(int)); if(!(s->base)) exit(1);

s->top=s->base+s->stacksize; s->stacksize+=STACKINCREMENT; } *s->top++=e; return 0; }//插入新的元素e为新的栈顶元素 int stackempty (sqstack *s) {if(s->top==s->base) return 1; else return 0; }//若栈s为空栈,则返回1,否则返回0 int pop (sqstack *s,int *e) {if(s->top==s->base) return 1; *e=*--s->top; return 0; }//若栈不为空,则删除s的栈顶元素,用e返回其值,返回OK,否则返回ERROR void conversion (int n) { sqstack s; int e; initstack(&s); printf("请输入一个十进制数:\n"); scanf("%d",&n); while (n){ push(&s,n%8); n=n/8; } printf("\n"); printf("该数的八进制数为:\n"); while(!stackempty(&s)){ pop(&s,&e); printf("%d",e); }

数据结构-栈十进制转八进制的算法详解(已测试过)

数据结构-栈十进制转八进制的算法详解(已测试过)

实验目的 建立栈实现十进制转八进制 实验内容 编程序并上机调试运行。 建立栈实现十进制转八进制 1.编写程序 //十进制转八进制 #include #include #include #define STACK_INIT_SIZE 100 #define STACKINCREMENT 10 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; }//构造一个空栈s int push(sqstack *s,int e) { if((s->top-s->base)>=s->stacksize){ s->base=(int*)realloc(s->base,(s->stacksize +

STACKINCREMENT )*sizeof(int)); if(!(s->base)) exit(1); s->top=s->base+s->stacksize; s->stacksize+=STACKINCREMENT; } *s->top++=e; return 0; }//插入新的元素e为新的栈顶元素 int stackempty (sqstack *s) {if(s->top==s->base) return 1; else return 0; }//若栈s为空栈,则返回1,否则返回0 int pop (sqstack *s,int *e) {if(s->top==s->base) return 1; *e=*--s->top; return 0; }//若栈不为空,则删除s的栈顶元素,用e返回其值,返回OK,否则返回ERROR void conversion (int n) { sqstack s; int e; initstack(&s); printf("请输入一个十进制数:\n"); scanf("%d",&n); while (n){ push(&s,n%8); n=n/8; } printf("\n"); printf("该数的八进制数为:\n"); while(!stackempty(&s)){ pop(&s,&e);

十进制数转换成十六进制

怎么把EXCEL表格里的一列里的十进制数转换成十六进制? DEC2HEX 将十进制数转换为十六进制数。 如果该函数不可用,并返回错误值#NAME?,请安装并加载“分析工具库”加载宏。 操作方法 在“工具”菜单上,单击“加载宏”。 在“可用加载宏”列表中,选中“分析工具库”框,再单击“确定”。 如果必要,请遵循安装程序中的指示。 语法 DEC2HEX(number,places) Number 待转换的十进制数。如果参数number 是负数,则省略places。函数DEC2HEX 返回10 位十六进制数(40 位二进制数),最高位为符号位,其余39 位是数字位。负数用二进制数的补码表示。 Places 所要使用的字符数,如果省略places,函数DEC2HEX 用能表示此数的最少字符来表示。当需要在返回的数值前置零时places 尤其有用。 说明: 如果number < -549、755、813、888 或者number > 549、755、813、887,则函数DEC2HEX 返回错误值#NUM!。 如果参数number 为非数值型,函数DEC2HEX 将返回错误值#VALUE!。 如果函数DEC2HEX 需要比places 指定的更多的位数,将返回错误值#NUM!。 如果places 不是整数,将截尾取整。 如果places 为非数值型,函数DEC2HEX 将返回错误值#VALUE!。 如果places 为负值,函数DEC2HEX 将返回错误值#NUM!。 示例 如果您将示例复制到空白工作表中,可能会更易于理解该示例。 操作方法 创建空白工作簿或工作表。 请在“帮助”主题中选取示例。不要选取行或列标题。 从帮助中选取示例。 按Ctrl+C。 在工作表中,选中单元格A1,再按Ctrl+V。 若要在查看结果和查看返回结果的公式之间切换,请按Ctrl+`(重音符),或在“工具”菜单上,指向“公式审核”,再单击“公式审核模式”。 公式说明(结果) =DEC2HEX(100, 4) 将十进制数100 转换为4 个字符的十六进制数(0064) =DEC2HEX(-54) 将十进制数-54 转换为十六进制数(FFFFFFFFCA)

各种进制的算法(终审稿)

各种进制的算法 文稿归稿存档编号:[KKUY-KKIO69-OTM243-OLUI129-G00I-FDQS58-

进制 一位八进制数字可以用三位二进数来表示,一位十六进制数可以用四位二进数来表示,所以二进制和八进制、十六进制间的转换非常简单 例1:将(1010111.01101)2转换成八进制数(从小数点方向向左向右算起) 1010111.01101=001 010 111. 011 010 (补齐三位,因为一位八进制数字由三位二进制数来表示) ↓ ↓ ↓ ↓ ↓ 12 73 2

例2、将(327.5)8转换为二进制3 2 7. 5 ↓ ↓ ↓ ↓ 011 010 111.101

(补齐四位,因为一位十六进制数字由四位二进制数来表示)↓ ↓ ↓ ↓ ↓1 B D 7 4 将(27.FC)16转换成二进制数2 7. F C↓ ↓ ↓ ↓ 0010 0111 1111 1100 所以(27.FC)16=(100111.111111)2 十进制转二进制:用2辗转相除至结果为1 将余数和最后的1从下向上倒序写就是结果例如302 302/2 = 151 余0 151/2 = 75 余1 75/2 = 37 余1 37/2 = 18 余1 18/2 = 9 余0 9/2 = 4 余1 4/2 = 2 余0 2/2 = 1 余0 二进制转十进制从最后一位开始算,依次列为第0、1、2... 位第n位的数(0或1)乘以2的n次方得到的结果相加就是答案例如:01101011.转十进制: 第0位:1乘2的0次方=1 1乘2的1次方=2 0乘2的2次方=0 1乘2的3次方=8 0乘2的4次方=0 1乘2的5次方=32 1乘2的6次方=64 0乘2的7次方=0 然后:1+2+0 +8+0+32+64+0=107.二进制01101011=十进制107.1.二进制与十进 制的转换(1)二进制转十进制
方法:"按权展开求和" 例:(1011.01)2 =(1×23+0×22+1×21+1×20+0×2-1+1×2-2)10 =(8+0+2+1+0+0.25)10 =(11.25)10 (2)十进制转二进制· 十进制整数转二进制数:"除以2取余,逆序输出" 例:(89)10=(1011001)2 2 89 2 44 …… 1 2 22 …… 0 2 11 …… 0 2 5 …… 1 2 2 …… 1 2 1 …… 0 0 …… 1 · 十进制小数转二进制数:"乘以2取整,顺序输出" 例: (0.625)10= (0.101)2 0.625 X 2 1.25 X 2 0.5 X 2 1.0

进制转换C语言的实现

索引 一、算法分析 二、数据结构: 1、头文件 2、栈的关键操作 三、关键程序: 1、十进制进制转换为其它 2、其它进制转换为十进制 一、算法分析 实现进制转换需要编个函数,每一函数完成相应进制的转换,下面是各个进制之间转换的数学方法的算法。 十进制转二进制: 十进制数转换成二进制数,是一个连续除2的过程;把要转换的数,除以2,得到商和余数,将商继续除以2,直到商为0.最后将所有余数倒序排列,得到数就是转换结果。 例如: 302/2 = 151 余0 151/2 = 75 余1 75/2 = 37 余1 37/2 = 18 余1 18/2 = 9 余0 9/2 = 4 余1 4/2 = 2 余0 2/2 = 1 余0 所以302转换为2进制,结果:100101110

十进制转八进制: 十进制数转换成八进制的方法和转换为二进制的方法类似,唯一变化:除数由2变成8。 例如: 120/8=15余0 15/8=1余7 1/8=0余1 所以120转换为8进制,结果为:170 十进制转十六进制: 十进制数转换成十六进制数的方法和转换为二进制的方法类似,唯一变化:除数由2变成16。 不过,十六进制数:(10~15)是用英文大写字母(A~F)表示。例如: 123/16=7余11 所以123转换为16进制,结果为:7B 二进制转十进制: 二进制数转换为十进制数按权展开,第0位的权值是2的0次方,第1位的权值是2的1次方〃〃〃〃〃〃 例如: 1010转换成十进制数:

第0位:0*2^0=0 第1位:1*2^1=2 第2位:0*2^2=0 第3位:1*2^3=8 所以转换为10进制数为:0+2+0+8=10 二进制转八进制: 利用421,从后往前每三位一组,缺位除补0,然后按十进制方法进行转换。 例如: (11001) 001=1 011=3 然后将结果按从下往上顶顺序书写:31 二进制转十六进制: 二进制和十六进制的互相转换比较重要。不过这二者的转换却不用计算;利用8421,对于任意一个4位的二进制数,都可以很快算出它对应的10进制值。 例如: 1111=8+4+2+1=15 又因为十六进制数:10~15用大写字母A~F表示,所以15为F。

进制十进制八进制十六进制转换练习题

数制及相互转换 进制表示形式R代表任意进制 二进制 B R→十:按权展开求和二→八:三位变一位 八进制 O (Q) 十→R:除R取余倒排二→十六:四位变一位 十进制 D 八→二:一位变三位 十六进制 H 十六→二:一位变四位 1、下列数据中数值最小的是 A、01110000B B、249D C、125Q D、AAH 2、下列数据中数值最大的是 A、3FH B、64D C、77Q D、111110B 3、下列数据中数值最大的是 A、100H B、100D C、100Q D、100B 4、十进制数24转换成二进制数是 A、11100 B、11010 C、11000 D、10100 5、下列数据中数值最小的是 6、下列数据中数值最大的是 7、下列各数中最大的是 A、B、D7 H C、214D D、325Q 8、与二进制数100101等值的十进制数是 A、34 B、35 C、36 D、37 9、与十进制数256等值的二进制数是 A、1000000 B、 C、 D、 10、与十六进制数ACE等值的十进制数是 A、2766 B、2765 C、2764 D、2763 11、十六进制数111与八进制数111之和,用八进制数表示为 A、310 B、1222 C、1000 D、532 12、按某种进制运算2 × 4=12,那么4 × 5为 A、20 B、32 C、24 D、12 13、若216是某种数制的一个数,它的值与十六进制数8E相等,则该数是()进制数。 A、六 B、八 C、九 D、十 14、下列各数中,属于合法的五进制数的是 A、216 B、123 C、354 D、189 15、下列无符号十进制中,能用8位二进制表示的是 A、257 B、288 C、256 D、255 16、无符号二进制数后加上一个0,形成的数是原来的几倍?

相关主题