2进制、10进制和16进制的相互转换

2进制、10进制和16进制的相互转换
2进制、10进制和16进制的相互转换

整数时十进制与二进制相互转换:

二进制的1101转化成十进制

1101(2)=1*2^0+0*2^1+1*2^2+1*2^3=1+0+4+8=13

转化成十进制要从右到左用二进制的每个数去乘以2的相应次方,不过次方要从0开始。相反,用十进制的13除以2,每除一下将余数就记在旁边,最后按余数从下向上排列就可得到1101。由二进制数转换成十进制数的基本做法是,把二进制数首先写成加权系数展开式,然后按十进制加法规则求和。这种做法称为“按权相加”法。

2的0次方是1

2的1次方是2

2的2次方是4

2的3次方是8

2的4次方是16

2的5次方是32

2的6次方是64

2的7次方是128

2的8次方是256

2的9次方是512

2的10次方是1024

2的11次方是2048

2的12次方是4096

2的13次方是8192

2的14次方是16384

2的15次方是32768

有小数点的十进制与二进制之间的转换:

十进制数转换为二进制数时,由于整数和小数的转换方法不同,所以先将十进制数的整数部分和小数部分分别转换后,再加以合并。例如19.95 转2进制分为两个步骤:

(1) 小数点前:

19/2=9余1

9/2=4 余1

4/2=2 余0

2/2=1 余0

1/2=0 余1

由下往上取余数10011

(2) 小数点后

0.95*2 = 1.9 取整1

(1.9-1)*2 = 1.8 取整1

(1.8-1)*2 = 1.6 取整1

(1.6-1)*2 = 1.2 取整1

(1.2-1)*2 = 0.4 取整0

(0.4-0)*2 = 0.8 取整0

(0.8-0)*2 = 1.6 取整1

(1.6-1)*2 = 1.2 取整1

假设小数精度为8位,从上往下去则小数点后为0.11110011

故19.95 转化为二进制为10011.11110011

整数时八进制数转换为十进制数:

八进制就是逢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

整数时十六进制数转换成十进制数:

2进制,用两个阿拉伯数字:0、1;

8进制,用八个阿拉伯数字:0、1、2、3、4、5、6、7;

10进制,用十个阿拉伯数字:0到9;

16进制,16进制就是逢16进1,但我们只有0~9这十个数字,所以我们用A,B,C,D,E,F这五个字母来分别表示10,11,12,13,14,15。字母不区分大小写。

十六进制数的第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 * 160 = 5

第1位: F * 161 = 240

第2位: A * 162 = 2560

第3位: 2 * 163 = 8192

相加即为10997

直接计算就是5 * 160+ F * 161 + A * 162 +2 * 163 = 10997

现在可以看出,所有进制换算成10进制,关键在于各自的权值不同。

十六进制数的表达方法:

如果不使用特殊的书写形式,16进制数也会和10进制相混。随便一个数:9876,就看不出它是16进制或10进制。C,C++规定,16进制数必须以0x开头。比如0x1表示一个16进制数。而1则表示一个十进制。另外如:0xff,0xFF,0X102A,等等。其中的x也也不区分大小写。(注意:0x中的0是数字0,而不是字母O)

以下是一些用法示例

int a = 0x100F;

int b = 0x70 + a;

至此,我们学完了所有进制:10进制,8进制,16进制数的表达方式。最后一点很重要,C/C++中,10进制数有正负之分,比如12表示正12,而-12表示负12,;但8进制和16进制只能用达无符号的正整数,如果你在代码中里:-078,或者写:-0xF2, C和C++并不把它当成一个负数。

10进制数转换成8进制的方法,和转换为2进制的方法类似,惟一变化:除数由2变成8。

十六进制数与二进制的相互转换:

二进制和十六进制的互相转换比较重要。不过这二者的转换却不用计算,每个C,C++程序员都能做到看见二进制数,直接就能转换为十六进制数,反之亦然。

我们也一样,只要学完这一小节,就能做到。

首先我们来看一个二进制数:1111,它是多少呢?

你可能还要这样计算:1 * 20 + 1 * 21 + 1 * 22 + 1 * 23 = 1 * 1 + 1 * 2 + 1 * 4 + 1 * 8 = 15。

然而,由于1111才4位,所以我们必须直接记住它每一位的权值,并且是从高位往低位记,:8、4、2、1。即,最高位的权值为23 =8,然后依次是22=4,21=2,20=1。记住8421,对于任意一个4位的二进制数,我们都可以很快算出它对应的10进制值。

二进制数要转换为十六进制,就是以4位一段,分别转换为十六进制。

如(上行为二制数,下面为对应的十六进制):

1111 1101 ,1010 0101 ,1001 1011

F D , A 5 ,9 B

反过来,当我们看到FD时,如何迅速将它转换为二进制数呢?

先转换F:

看到F,我们需知道它是15(可能你还不熟悉A~F这五个数),然后15如何用8421凑呢?应该是8 + 4 + 2 + 1,所以四位全为1 :1111。接着转换D:看到D,知道它是13,13如何用8421凑呢?应该是:8 + 2 + 1,即:1011。

所以,FD转换为二进制数,为:1111 1011

由于十六进制转换成二进制相当直接,所以,我们需要将一个十进制数转换成2进制数时,也可以先转换成16进制,然后再转换成2进制。同样,如果一个二进制数很长,我们需要将它转换成10进制数时,除了前面学过的方法是,我们还可以先将这个二进制转换成16进制,然后再转换为10进制。

下面举例一个int类型的二进制数:

01101101 11100101 10101111 00011011

我们按四位一组转换为16进制为6D E5 AF 1B。

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

若十进制数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)

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

一,十进制转换十六进制 若十进制数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

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];

10进制转16进制汇编语言

;(2)数制转换 ;将输入的一个数据以不同进制形式输出。 ;要求: ;(a)所有数字从键盘输入; ;(b)输入数据为任意一个小于十万的十进制数据; ;(c)将所输入数据以十六进制在屏幕显示输出(即十进制转十六进制)。 DA TA SEGMENT KEYBUFFER DB 100 DB 0 DB 100 DUP(0) STRING1 DB 'Please input decimal data:',' $' DA TA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DA TA,ES:DA TA START: MOV AX,DATA MOV DS,AX MOV ES,AX LEA DX,STRING1 ;显示提示输出 MOV AH,09H INT 21H MOV AH,0AH LEA DX,KEYBUFFER INT 21H LEA SI,KEYBUFFER+1 CALL TRANS10TO16 CALL DISPCR CALL DISPAX CALL DISPCR MOV AX,BX CALL DISPAX MOV AH,4CH INT 21H DISPAL PROC NEAR PUSH AX PUSH CX PUSH DX PUSH AX MOV CL,4 ;处理高位十六进制数 SHR AL,CL CALL CHANG ;十六进制数变换成ASCII码 MOV AH,02 MOV DL,AL

POP AX AND AL,0FH ;处理低位十六进制数 CALL CHANG ;同上解释 MOV AH,02 MOV DL,AL INT 21H POP DX POP CX POP AX RET DISPAL ENDP CHANG PROC NEAR ;数码转换 CMP AL,10 JNGE CHANG1 ADD AL,7 CHANG1: ADD AL,30H RET CHANG ENDP DISPAX PROC NEAR XCHG AL,AH CALL DISPAL XCHG AH,AL CALL DISPAL RET DISPAX ENDP DISPCR PROC NEAR PUSH AX PUSH DX MOV AH,2 MOV DL,0AH INT 21H MOV AH,2 MOV DL,0DH INT 21H POP DX POP AX RET DISPCR ENDP ;将输入缓冲区中以ASCII码表示的十进制数转换成16位二进制数TRANS10TO16 PROC NEAR PUSH CX PUSH DX

十六进制数转换成十进制数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

十进制转十六进制

一:十进制数转换成二进制数。 随便拿出一个十进制数“39”,(假如你今天买书用了39元)先来把这个39转换成2进制数。 商余数步数 39/2= 19 1 第一步 19/2= 9 1 (这里的19是第一步运算结果的商)第二步 9/2= 4 1 (这里的9是第二步运算结果的商)第三步4/2= 2 0 (这里的4是第三步运算结果的商)第四步2/2= 1 0 (这里的2是第四步运算结果的商)第五步1/2= 0 1 (这里的1是第五步运算结果的商)第六步 那么十进制数39转换成2进制数就是100111. 既39(10)=100111(2) 解析一:1. 当要求把一个10进制数转换成2进制数的时候,就用那个数一直除以2得到商和余数。 2. 用上一步运算结果的商在来除以2,再来得到商和余数。 3. 就这样,一直用上一步的商来除以2,得到商和余数!那么什么时候停止呢? 4. 请看上述运算图,第六步的运算过程是用1除以2.得到的商是0,余数是1. 那么请你记住,记好了啊共2点。A: 当运算到商为“0”的时候,就不用运算了。B:1/2的商为“0”余数为“1”。这个你要死记住,答案并不是0.5!答案就是商为“0”余数为“1”。你不用去思考为什么,记好了就行了! 5. 在上述图中你会清晰的看到每一步运算结果的余数,你倒着把它们写下来就是“100111”了。那么这个就是结果了。 6. 在上述图中符号“/”代表“除以”。 二:十进制数转换成八进制数。 随便拿出一个十进制数“358”,(假如你今天买彩票中了358元)。358是我们现实生活中所用10进制表达出来的一个数值,转换成八进制数十多少? 商余数步数

十进制数转换成十六进制

怎么把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)

16进制转换成10进制C++程序代码

#include #include double transform() { int i,j,pow=1; int dot=-1; //记录小数点位置 double DEC=0,fpow; char HEX[100]; cout<<"请输入一个十六进制数"<>HEX; j=strlen(HEX); for(i=j;i>0;) { i--; if ((HEX[i]>='0') && (HEX[i]<='9')) HEX[i]=HEX[i]-'0'; else if((HEX[i]>='A') && (HEX[i]<='F')) HEX[i]=HEX[i]-'A'+10; else if((HEX[i]>='a') && (HEX[i]<='f')) HEX[i]=HEX[i]-'a'+10; else if(HEX[i]=='.') dot=i; //找到小数点 else { cout<<"你的输入不合法,请重新输入"<0;) //小数点前部分用你的方法 { i--; DEC=DEC+HEX[i]*pow; pow=pow*16; } fpow=1.0/16; for(i=dot;i

} cout<<"该十六进制数转化为十进制数为"<0;) { i--; DEC=DEC+HEX[i]*pow; pow=pow*16; } cout<<"该十六进制数转化为十进制数为"<

(C语言)10进制转换2,8,16进制

(C语言)10进制转换2,8,16进制 作者:vinseven #include"stdio.h" #include"conio.h" #include"malloc.h" #include"windows.h" #define ElemType int void menu(); void TenToTwo(); void TenToEight(); void TenToSixteen(); void InitStack(struct sNode **HS); void Push(struct sNode **HS,ElemType x); ElemType Pop(struct sNode **HS); ElemType Peek(struct sNode **HS); int EmptyStack(struct sNode **HS); void ClearStack(struct sNode **HS); int ten;/*要输入的10进制数*/ int x;/*把将要插入到栈中的元素暂时存进x 中*/ struct sNode hs;

struct sNode { ElemType data; struct sNode *next; }; void main() { menu(); getch(); } void menu() { char choice; int flag=1; while(1) { printf("\n\t\t\t________________________\n\n\n"); printf("\t\t\t 1,10进制转换2进制\n\n\n"); printf("\t\t\t 2,10进制转换8进制\n\n\n"); printf("\t\t\t 3,10进制转换16进制\n\n\n"); printf("\t\t\t 0,退出\n\n\n");

十进制转化十六进制

要把1610转换成16进制,采用什么方法好?为什么有的是先转换成2进制?具体方法和步骤怎么样? 我来帮他解答 2009-11-9 12:56 满意回答 直接转16进制: 1610/16=100……10(A); 100 /16= 6……4; 6 /16= 0……6; 故:1610(10)=64A(16). 先转2进制: 1610/2=805……0; 805 /2=402……1; 402 /2=201……0; 201 /2=100……1; 100 /2=50 ……0; 50 /2=25 ……0; 25 /2=12 ……1; 12 /2=6 ……0; 6 /2=3 ……0; 3 /2=1 ……1; 1 /2=0 ……1. 1610(10)= 0110 0100 1010(2) 1610(10)= 64A(16) 2进制——16进制转换表; 0--0000 1--0001 2--0010 3--0011 4--0100 5--0101 6--0110 7--0111 8--1000 9--1001 A--1010 B--1011 C--1100 D--1101

E--1110 F—1111 修改中经常接触的是2、10和16进制,基本上需要了解的是2和16互转、10和16互转,其他多了解也没亏2转16:4个2进制位为一个16进制数,2进制1111为16进制F,2进制中千位的1=8,百位的1=4,十位的1=2,个位的1=1,将各个位的数作相应转换再相加,的到的数就是10进制数0-15,可轻松转换成16进制。如01011100,可看成是两组2进制数0101和1100,则这个数就是16进制的5C。10转16:100以内一点的10转16心算比较快,复杂的用“计算器”算了。10转16用传统的计算方式可以了,就是大于15小于256的10进制数除以16为的值为十位的16进制数,其余数为个位的16进制数,没余数则个位为0。如61的16进制是3D,61除以16得3余13,3作十位数,13转成D为各位数。字串1 16转10:用相反的道理,将十位数乘以16加上个位数。如5A,将5乘以16得80,加上A的10进制10,结果是90。字串2 其实这些都是计算机基础,基本上学过计算机的都会学到这些,但留意一下,他们对于修改是十分有用的,平时多多留意,多多试验,你也会成为修改高手。字串4 个人推荐使用:WINDOWS中点击“开始”--”程序“--“附件”--“计算器”,按“查看”再选“科学型”,就可以方便的进行各进制的转换了(如:你要转换10进制90000000为16进制,点“十进制”,输入90000000,再点一下“16进制”,就会看到55D4A80,转换就完成了。其他同理)。字串7 二进制、八进制、十六进制字串3这是一节“前不着村后不着店”的课。不同进制之间的转换纯粹是数学上的计算。不过,你不必担心会有么复杂,无非是乘或除的计算。字串8生活中其实很多地方的计数方法都多少有点不同进制的影子。字串1比如我们最常用的10进制,其实起源于人有10个指头。如果我们的祖先始终没有摆脱手脚不分的境况,我想我们现在一定是在使用20进制。字串1至于二进制……没有袜子称为0只袜子,有一只袜子称为1只袜子,但若有两袜子,则我们常说的是:1双袜子。字串9生活中还有:七进制,比如星期。十六进制,比如小时或“一打”,六十进制,比如分钟或角度…… 字串7 字串3 6.1 为什么需要八进制和十六进制?字串5 编程中,我们常用的还是10进制……必竟C/C++是高级语言。字串2 比如:字串8 int a = 100,b = 99; 字串7不过,由于数据在计算机中的表示,最终以二进制的形式存在,所以有时候使用二进制,可以更直观地解决问题。字串1但,二进制数太长了。比如int 类型占用4个字节,32位。比如100,用int类型的二进制数表达将是:字串5 0000 0000 0000 0000 0110 0100 字串1 面对这么长的数进行思考或操作,没有人会喜欢。因此,C,C++ 没有提供在代码直接写二进制数的方法。字串4字串8 用16进制或8进制可以解决这个问题。因为,进制越大,数的表达长度也就越短。不过,为什么偏偏是16或8进制,而不其它的,诸如9或20进制呢?字串4 2、8、16,分别是2的1次方,3次方,4次方。这一点使得三种进制之间可以非常直接地互相转换。8进制或16进制缩短了二进制数,但保持了二进制数的表达特点。在下面的关于进制转换的课程中,你可以发现这一点。字串9 字串4 6.2 二、八、十六进制数转换到十进制数6.2.1 二进制数转换为十进制数二进制数第0位的权值是2的0次方,第1位的权值是2的1次方…… 字串2 所以,设有一个二进制数:0110 0100,转换为10进制为:字串5 下面是竖式:字串5字串9 0110 0100 换算成十进制字串3 字串5第0位0 * 20 = 0 字串5第1位0 * 21 = 0 字串7第2位 1 * 22 = 4 字串1第3位0 * 23 = 0 字串7 第4位0 * 24 = 0 字串4第5位1 * 25 = 32 字串1 第6位1 * 26 = 64 字串6第7位0 * 27 = 0 +

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]);

十进制转十六进制

十进制转十六进制 aesopy28843 10级分类:汇编语言被浏览5463次 2013.02.21 师傅们好,我在学PLC编程,想知道怎么样把十进制转换成十六进制,详细点的,比如说15A,18F,这些字母算出来的规律,先谢谢师傅们了 asfadsfe6350 采纳率:47% 11级 2013.02.22 一:十进制数转换成二进制数。随便拿出一个十进制数“39”,(假如你今天买书用了39元)先来把这个39转换成2进制数。商余数步数39/2= 19 1 第一步19/2= 9 1 (这里的19是第一步运算结果的商)第二步9/2= 4 1 (这里的9是第二步运算结果的商)第三步4/2= 2 0 (这里的4是第三步运算结果的商)第四步2/2= 1 0 (这里的2是第四步运算结果的商)第五步1/2= 0 1 (这里的1是第五步运算结果的商)第六步那么十进制数39转换成2进制数就是100111. 既39(10)=100111(2) 解析一:1. 当要求把一个1 0进制数转换成2进制数的时候,就用那个数一直除以2得到商和余数。2. 用上一步运算结果的商在来除以2,再来得到商和余数。 3. 就这样,一直用上一步的商来除以2,得到商和余数!那么什么时候停止呢? 4. 请看上述运算图,第六步的运算过程是用1除以2.得到的商是0,余数是1. 那么请你记住,记好了啊共2点。A: 当运算到商为“0”的时候,就不用运算了。B:1/2的商为“0”余数为“1”。这个你要死记住,答案并不是0.5!答案就是商为“0”余数为“1”。你不用去思考为什么,记好了就行了!5. 在上述图中你会清晰的看到每一步运算结果的余数,你倒着把它们写下来就是“100111”了。那么这个就是结果了。 6. 在上述图中符号“/”代表“除以”。二:十进制数转换成八进制数。随便拿出一个十进制数“358”,(假如你今天买彩票中了358元)。358是我们现实生活中所用10进制表达出来的一个数值,转换成八进制数十多少?商余数步数358/8= 44 6 第一步44/8= 5 4 (这里的44是第一步运算结果的商)第二步5/8= 0 5 (这里的5是第二步运算结果的商)第三步那么十进制数358转换成8进制数就是546。既358(10)=546(8)解析二:1.没什么好说的啦,10进制数转换成2进制数和10进制数转换成8进制数的唯一不一样的地方就是除数变了,除数由“2” 变成了“8”。其余的都一样。所以解析一,你一定要看明白并记好。2.你或许会疑问5/8为什么商为“0” 余数为“5”。因为5不够被8除,那么商就是“0”余数就是“5” 同理1/2商为“0”余数为“1”。不多解释了啊!三:十进制数转换成十六进制数。随便拿出一个十进制数“120”,(假如你今天捡了120元)。120是我们现实生活中所用10进制表达出来的一个数值,转换成十六进制数十多少?商余数步数120/16= 7 8 第一步7/16= 0 7 (这里的7是第一步运算结果的商)第二步@4 那么十进制数120转

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

进制数与十六进制数的 转换方法 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进制。转换表如下,括号内为

进制转换方法总结

信息的编码 再问学生计算机存储信息是不是都采用了二进制数二进制也存在缺点,二进制都用0和1, 而且位数太多, 不易理解, 也易出错。为描述方便常用八、十进制,十六进制数表示二进制数 在微机中,一般在数字的后面,用特定字母表示该数的进制。 十进制:日常生活中最常见的是十进制数,用十个不同的符号来表示:0、1、2、3、4、5、6、7、8、9。 基为:10 运算规则:逢十进一,借一当十 在十进制数的后面加大写字母D以示区别。 二进制:二进制数只有两个代码“0”和“1”,所有的数据都由它们的组合来实现。 基为:2 运算规则:“逢二进一,借一当二”的原则。 在八进制数据后加英文字母“B” 八进制:使用的符号:0、1、2、3、4、5、6、7; 运算规则:逢八进一; 基为:8 在八进制数据后加英文字母“O”, 十六进制:使用的符号:采用0~9和A、B、C、D、E、F六个英文字母一起共十六个代码。 运算规则:逢十六进一

基为:16 在十六进制数据后加英文字母“H”以示分别。 那么二进制数与八进制、十进制,十六进制数是怎么转换的呢 3、协作提高:用讲解法对二进制数与十进制数、十六进制数之间相互的转换的原理及方法(将二进制数字表示的位权值与十进制数字表示的位权值加以对比),叫几位学生到黑板上来做,其它同学在下面草稿纸上做。观察在黑板上做的同学的对错情况,要知道错,错在那里。 由N进制数转换成十进制数的基本做法是,把N进制数首先写成加权系数展开式,然后按十进制加法规则求和。这种做法称为"按权相加"法。 各数制的权 如:十进制中,各位的权为10n-1 二进制中,各位的权为2n-1 十六进制中,各位的权为16n-1 八进制中,各位的权为8n-1 1)、二进制转换为十进制 各数制中整数部分不同位的权为“基的n-1次方(n为数值所在的位数,n的最小值取1)”,小数部分不同位的权值为“基的-n次方,从左向右,每移一位,幂次减1”。 二进制数的基数为2 例()2=()D

进制转换方法

Hex number system 是计算机中数据的一种表示方法.同我们日常中的十进制表示法不一样.它由0-9,A-F,组成.与10进制的对应关系是: 0-9对应0-9; A-F对应10-15; N进制的数可以用0---(N-1)的数表示超过9的用字母A-F 例如: 10进制的32表示成16进制就是:20 16进制的32表示成10进制就是:3×16^1+2×16^0=50 6.1 为什么需要八进制和十六进制? 编程中,我们常用的还是10进制……毕竟C/C++是高级语言。 比如: int a = 100,b = 99; 不过,由于数据在计算机中的表示,最终以二进制的形式存在,所以有时候使用二进制,可以更直观地解决问题。 但,二进制数太长了。比如int 类型占用4个字节,32位。比如100,用int类型的二进制数表达将是:0000 0000 0000 0000 0110 0100 面对这么长的数进行思考或操作,没有人会喜欢。因此,C,C++ 没有提供在代码直接写二进制数的方法。 用16进制或8进制可以解决这个问题。因为,进制越大,数的表达长度也就越短。不过,为什么偏偏是16或8进制,而不其它的,诸如9或20进制呢? 2、8、16,分别是2的1次方,3次方,4次方。这一点使得三种进制之间可以非常直接地互相转换。8进制或16进制缩短了二进制数,但保持了二进制数的表达特点。在下面的关于进制转换的课程中,你可以发现这一点。

6.2 二、八、十六进制数转换到十进制数 6.2.1 二进制数转换为十进制数 二进制数第0位的权值是2的0次方,第1位的权值是2的1次方…… 所以,设有一个二进制数:0110 0100,转换为10进制为: 下面是竖式: 0110 0100 换算成十进制 第0位0 * 2^0 = 0 第1位0 * 2^1 = 0 第2位1 * 2^2 = 4 第3位0 * 2^3 = 0 第4位0 * 2^4 = 0 第5位1 * 2^5 = 32 第6位1 * 2^6 = 64 第7位0 * 2^7 = 0 + --------------------------- 100 用横式计算为: 0 * 2^0 + 0 * 2^1 + 1 * 2^2 + 0 * 2^3 + 0 * 2^4 + 1 * 2^5 + 1 * 2^6 + 0 * 2^7 = 100

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

二进制,八进制,十进制,十六进制之间的转换算法 一、十进制与二进制之间的转换 (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入。这个也是计算机在转换中会产生误差,但是由于保留位数很多,精度很高,所以可以忽略不计。

相关文档
最新文档