文档库 最新最全的文档下载
当前位置:文档库 › MDT10F630 PIC16F630 的差别与烧录档转换

MDT10F630 PIC16F630 的差别与烧录档转换

MDT10F630 PIC16F630 的差别与烧录档转换
MDT10F630 PIC16F630 的差别与烧录档转换

MDT10F630 与

PIC16F630 的差别与烧录档转换 一、MDT10F630与PIC16F630的差别:

1、用外部晶振时, MDT10F630需要设置90H 寄存器, 并在烧录选项选择相应的晶振模式。 PIC16F630通过烧录选项设置振荡类型。 MDT10F630 90H :MCU 振荡器控制寄存器.

Bit 7 Bit 6 Bit 5 Bit 4

Bit 3 Bit 2 Bit 1 Bit 0 INOSCR - REG REG REG ECKIN OSO2E OSC2O OSCIN

Bit6 ~ 4 : 普通寄存器位

ECKIN : 外部时钟输入使能位;

0 =不使能振荡器外部输入时钟

1 =使能振荡器外部时钟输入(外部RC 振荡荡必须置1)

OSO2E :内部和外部振荡器使能位;

0 =只使用内部或外部振荡器

1 =使能内部和外部(仅LF 模式)振荡器

OSC2O : OSC2/PA4 振荡器时钟输出使能位;

0 = 在内部或外部RC 模式振荡模式下不使能OSC2/PA4时钟输出

1 = 在内部或外部RC 模式振荡模式下使能OSC2/PA4时钟输出

OSCIN : MCU 内部或外部振荡器选择位;

0 = 默认的 MCU 时钟基于内部4MHz 振荡器

1 = MCU 时钟基于外部振荡器(通过OPTION 选择类型),

当内部4MHz 振荡器变成外部振荡器时,必需等OST 时间20ms 。

注解:

当 Bit2 被为设定为 "0" 内部振荡与外部振荡只有一种振荡会 Enable.

当 Bit2 被为设定为 "1" 内部振荡与外部振荡会同时 Enable, 而外部振荡模式强设为 LF type .

Bit3 为设定外灌 clock 模式, PA4/osc2 pin 会被强制为 I/O 无法作 clock output,

当 Bit3 & Bit0 同时被设定为 "1", 内部振荡将会停止, IC 的系统 clock 必须由PA5/OSC1 pin 直接给脉波才能动作 .

例子 : 改振荡器为外部振荡器 (振荡器从OPTION 中选择类型)

BSR

STATUS, PAGE ; 设置页 1 LDWI

01H ; 设置W 数据为 01H STWR

10H ; 存储 01H 到寄存器90H (INOSCR) BCR STATUS, PAGE ; 设置页 0

对应的16进制码是: 0A83 ;BSR STATUS, 5; 设置页 1

3A01 ;LDWI 01H ; 设置W 数据为 01H

1190 ;STWR 10H ; 存储 01H 到寄存器90H (INOSCR)

0283 ;BCR

STATUS, 5 ; 设置页 0

2、PIC16F630 的 /MCLR 功能可以通过烧录选项设置,而 MDT10F630 的 /MCLR 功能须选用

MDT10F630P13 or MDT10F630S13 包装,则外部/MCLR的封装。无法通过烧录选择。

3、MDT10F630 无 Brown-out 功能。

4、其它使用方式一样。

二、PIC16F630烧录档转成MDT10F630

由于两者设置内外部振荡器的方法不同,MDT需要用90H来设置振荡方式,而PIC16F630的90H 是用来校正内部频率的,有的程序90H会被设一些值,有的无任何设置。所以PIC16F630烧录档转至10F630时,需要特别注意90H的设置。

如果有ASM档,在ASM档里按10F630规格修改90H值,再重新编译则可。

如果只有烧录档,就需要想办法把设置90H的指令加进去或修改原烧录档中90H的参数。

下面举例说明将设置90H参数加到烧录档里:

烧录档16F630。HEX,要求用外部振荡455K,则LF振荡模式。

步骤:

1、用MDT烧写器软件打开16F630。HEX,反编译:

2、保存反编译文档:

3、用WORD打开反编译文档,查找10H,注意当STATUS,5=1时,10H就是90H,有的10H不是表示寄存器而是地址或立即数,要注意辩认。

4、该程序查找的结果是没有对90H设置的,按MDT10F630规格书要求:LF需要将90H设为00001101B,则0DH,所以先找ROM中没有写代码的地方,如地址380H,将把指令填在此处。

5、开始填写指令,用鼠标双击需要填写的地方,弹出对话框,我们需要在380H填指令,所以在MCU 复位地址0000H处先填上LJUMP 380H,则如下图对话框中的2B80,使程序跑到380H处。

6、再到380H处,填上如下数据,则

BSR STATUS,5 ;

LDWI 0DH ;

10H ;

STWR

BCR STATUS,5 ;

200H ;千万别忘了,跳回原本应复位的地址200H

LJUMP

7、反编译检查填写无误后,保存成MDT 烧录档,如上图。

8、最后再提醒一下,如果原代码中有设置90H 的,修改原设置参数则可;有多处设置90H 的(一般不会出现),则只保留上电复位时的设置,其它的设置删掉。

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

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

各种进制之间转换方法

各进制转换方法(转载) 一、计算机中数的表示: 首先,要搞清楚下面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 三、各种进制数的运算

进制之间的转换

1.十进制数100.625等值于二进制数()。 A.1001100.101 B. 1100100.101 C. 1100100.011 D. 1001100.11 E. 1001100.01 2. 以下二进制数的值与十进制数2 3.456 的值最接近的是()。 A.10111.0101 B. 11011.1111 C. 11011.0111 D. 10111.0111 E. 10111.1111 3.与十进制数28.5625相等的四进制数是() A.123.21 B.131.22 C.130.22 D.130.21 E.130.20 4. 十进制数2003等值于二进制数()。 A)010******* B)10000011 C)110000111 D)11111010011 E)1111010011 5、运算式(2047)10-(3FF)16+(2000)8的结果是( ) A)(2048)10 B)(2049)10 C)(3746)8 D)(1AF7)16 6.十进制书11/128可用二进制数码序列表示为:(D )。 A)1011/1000000 B)1011/100000000 C)0.001011 D)0.0001011 7.在19+33=52等式中,每个数可能的进制是()。 A.十进制、十六进制、八进制 B.十六进制、十进制、八进制 C.十六进制、八进制、十进制 D.十进制、八进制、十六进制 8. 与十进制数1770.625 对应的八进制数是()。 A. 3352.5 B. 3350.5 C. 3352.1161 D. 3350.1151 E. 前 4 个答案都不对

各种进制之间转换方法

各进制转换方法(转载)一、计算机中数的表示: 首先,要搞清楚下面3个概念 ?数码:表示数的符号 ? 基:数码的个数 ?权:每一位所具有的值

、各种进制的转换问题 1. 二、八、十六进制转换成十进制 2. 十进制转换成二、八、十六进制 3. 二进制、八进制的互相转换 4. 二进制、十六进制的互相转换 1、二、八、十六进制转换成十进制 方法:数码乘以相应权之和 例(HloJ-l/25+lx24+l/23+0/22+ h2:+h20 -(59)10 例(136)8=lx82+3x8l+6x8°=(94)10 例(1F2^)1S=1X163+15X16S +2\16] + 10/16° = (7978)10 2、十进制转换成二、八、十六进制 方法:连续除以基,直至商为0,从低到高记录余数

例把十进制数159转换成八进制数 8| 19 8辽 (159)IO =(237)8 例把十进制数59转换成二进制数 (59)IO =(111O11)2 2 余余余余余余 8 159

例把十进制数459转换成十六进制数 u | 1| C| B (459)io=(1CB)ib ' 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 三、各种进制数的运算 方法:逢满进具体计算与平时十进制的计算类似,以十六进制为例: 加法:

进制之间的转换

--进制之间的转换-- 介绍:进制也就是进位计数制,是人为定义的带进位的计数方法(有不带进位的计数方法,比如原始的结绳计数法,唱票时常用的“正”字计数法,以及类似的tally mark计数)。对于任何一种进制---X进制,就表示每一位置上的数运算时都是逢X进一位。十进制是逢十进一,十六进制是逢十六进一,二进制就是逢二进一,以此类推,x进制就是逢x进位。 --常见的几种进制 二进制(B)十进制(D)十六进制(H)八进制(O) 1.二进制 二进制有两个特点:它由两个数码0、1组成,二进制的规律是逢二进一。 -转换。 a.将二进制转换为十进制。 例子:将二进制数10111.1011转换为十进制 解析: 小数点前 1 0 1 1 ------ 转换为十进制 1×23 0×22 1×21 1×20 ------ 8+0+2+1=11 小数点后1 0 1 1 ------ 转换为十进制 1×2-1 0×2-21×2-31×2-4 ---- 0.5+0+0.125+0.0625=0.6875 则,二进制1011.1011转换为十进制数为 11+0.6875=11.6875. (1011.1011) B =(11.6875) D b.将二进制转换为八进制。 例子:将二进制数10111.1011转换为八进制 解析: (由小数点开始,向两边每3个分为一组) 001 011 .101 100 (按照二进制转十进制的算法,算出每三个所对应的十进制数) 1 3 . 5 4 则,(1011.1011) B =(13.54) O c.将二进制转换为十六进制。 例子:将二进制数10111.1011转换为八进制解析:

各种进制之间的转换方法

各种进制之间的转换方法 ⑴二进制B转换成八进制Q:以小数点为分界线,整数部分从低位到高位,小数部分从高位到低位,每3位二进制数为一组,不足3位的,小数部分在低位补0,整数部分在高位补0,然后用1位八进制的数字来表示,采用八进制数书写的二进制数,位数减少到原来的1/3。 例:◆二进制数转换成八进制数: = 110 110 . 101 100B ↓↓ ↓ ↓ 6 6 . 5 4 = ◆八进制数转换成二进制数: 3 6 . 2 4Q ↓ ↓ ↓ ↓ 011 110 . 010 100 = ◆ 低位,每4位二进制数为一组,不足4位的,小数部分在低位补0,整数部分在高位补0,然后用1位十六进制的数字来表示,采用十六进制数书写的二进制数,位数可以减少到原来的1/4。 例:◆二进制数转换成十六进制数: .100111B = 1011 0101 1010 . 1001 1100B ↓ ↓ ↓ ↓ ↓ B 5 A . 9 C = 5A ◆十六进制数转换成二进制数: = A B . F EH ↓ ↓ ↓ ↓ 1010 1011. 1111 1110 = .1111111B 先把八进制数Q转换成二进制数B,再转换成十六进制数H。 例:◆八进制数转换成十六进制数: = 111 100 000 010 . 100 101B = .100101B = 1111 0000 0010 . 1001 0100B = F 0 2 . 9 4H = ◆十六进制数转换成八进制数: = 0001 1011 . 1110B = = 011 011 . 111B = 3 3 . 7Q = ⑷二进制数B转换成十进制数D:利用二进制数B按权展开成多项式和的表达式,取基数为2,逐项相加,其和就是相应的十进制数。

数制间的转换

一到500二进制转换十进制对照表0,0 1,1 2,10 3,11 4,100 5,101 6,110 7,111 8,1000 9,1001 10,1010 11,1011 12,1100 13,1101 14,1110 15,1111 16,10000 17,10001 18,10010 19,10011 20,10100 21,10101 22,10110 23,10111 24,11000 25,11001 26,11010 27,11011 28,11100 29,11101 30,11110 31,11111 32,100000 33,100001 34,100010 35,100011 36,100100 37,100101 38,100110 39,100111 40,101000 41,101001 42,101010

44,101100 45,101101 46,101110 47,101111 48,110000 49,110001 50,110010 51,110011 52,110100 53,110101 54,110110 55,110111 56,111000 57,111001 58,111010 59,111011 60,111100 61,111101 62,111110 63,111111 64,1000000 65,1000001 66,1000010 67,1000011 68,1000100 69,1000101 70,1000110 71,1000111 72,1001000 73,1001001 74,1001010 75,1001011 76,1001100 77,1001101 78,1001110 79,1001111 80,1010000 81,1010001 82,1010010 83,1010011 84,1010100 85,1010101 86,1010110

进制之间相互关系

二进制、八进制、十进制、十六进制之间转换 一、十进制与二进制之间的转换 (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.十进制数与非十进制数之间的转换 (1)十进制数转换成非十进制数 把一个十进制数转换成非十进制数(基数记作R)分成两步.整数部分转换时采用“除R取余法”;小数部分转换时采用“乘R取整法”。 (2)非十进制数转换成十进制数 非十进制数(基数记作R,第j个数位的位权记作Rj)转换成十进制数的方法:按权展开求其和。 2.非十进制数之间的转换 (1)二进制数与八进制数之间的转换 ①二进制数转换成八进制数的方法.以小数点分界,整数部分自右向左、小数部分自左向右,每三位一组,不足三位时,整数部分在高位左边补0,小数部分在低位右边补0,然后写出对应的八进制数码。 ②八进制数转换成二进制数的方法:用八进制数码对应的三位二进制数代替八进制数码本身即可。 (2)二进制数与十六进制数之间的转换 ①二进制数转换成十六进制数的方法:以小数点分界,整数部分自右向左、小数部分自左向右,每四位一组,不足四位时,整数部分在高位左边补0,小数部分在低位右边补0,然后写出对应的十六进制数码。 ②十六进制数转换成二进制数的方法:用十六进制数码对应的四位二进制数代替十六进制数码本身即可。

五、例题讲解 例1 将十进制数59.625转换成二进制是。(2000年题) (1)本题的正确思维及答案:一个十进制数转换成二进制数时,整数和小数部分要分别考虑。另外,若能熟练记忆下表,利用二进制转换成十进制时的展开式,就可以直接写出对应的二进制数。 20 1 25 32 2-1 0.5 21 2 26 64 2-2 0.25 22 4 27 128 2-3 0.125 23 8 28 256 2-4 0.0625 24 16 29 512 2-5 0.03125 答案:111011.101 (2)学生易犯的错误:小数的转换方法不清楚及运算不熟练。(3)此题的拓展及变题: a.二进制数1011.1010可转化为十进制数C 。(1998年题)。 A)11.8 B)11.125 C)11.625 D)11.525 b.十进制数329可转化为八进制数A 。(1998年题) A)511 B)501 C)411 D)401 c.十进制数0.8125的二进制数表示为B (1999年题)。 A)0.1011 B)0.1101 C)0.1111 D)0.1001 d.八进制数34.54的二进制数表示为A (1999年题) A)011100.101100 B)101100.011100 C)100011.100101 D)011100.001011

计算机进制之间相互转换

计算机进制之间的相互转换 一、进位计数制 所谓进位计数制是指按照进位的方法进行计数的数制,简称进位制。在计算机中主要采用的数制是二进制,同时在计算机中还存在八进制、十进制、十六进制的数据表示法。下面先来介绍一下进制中的基本概念: 1、基数 数制是以表示数值所用符号的个数来命名的,表明计数制允许选用的基本数码的个数称为基数,用R表示。例如:二进制数,每个数位上允许选用0和1,它的基数R=2;十六进制数,每个数位上允许选用1,2,3,…,9,A,…,F共16个不同数码,它的基数R=16。 2、权 在进位计数制中,一个数码处在数的不同位置时,它所代表的数值是不同的。每一个数位赋予的数值称为位权,简称权。 权的大小是以基数R为底,数位的序号i为指数的整数次幂,用i表示数位的序号,用Ri表示数位的权。例如,543.21各数位的权分别为102、101、100、10-1和10-2。 3、进位计数制的按权展开式 在进位计数制中,每个数位的数值等于该位数码与该位的权之乘积,用Ki表示第i位的系数,则该位的数值为KiRi。任意进位制的数都可以写成按权展开的多项式和的形式。 二、计算机中的常用的几种进制。 在计算机中常用的几种进制是:二进制、八进制、十进制和十六进制。二进制数的区分符用字母B表示,八进制数的区分符用字母O表示,十进制数的区分符用字母D表示或不用区分符,十六进制数的区分符用字母H表示。 1、二进制(Binary System)

二进制数中,是按“逢二进一”的原则进行计数的。其使用的数码为0,1,二进制数的基为“2”,权是以2为底的幂。 2、八进制(Octave System) 八进制数中,是按“逢八进一”的原则进行计数的。其使用的数码为0,1,2,3,4,5,6,7,八进制数的基为“8”,权是以8为底的幂。 3、十进制(Decimal System) 十进制数中,是按“逢十进一”的原则进行计数的。其使用的数码为1,2,3,4,5,6,7,8,9,0,十进制数的基为“10”,权是以10为底的幂。 4、十六进制(Hexadecimal System) 十六进制数中,是按“逢十六进一”的原则进行计数的。其使用的数码为0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F,十进制数的基为“16”,权是以16 为底的幂。 三、进位计数制相互转换 1、二进制转换成八进制 转换原则:以小数点为中心,整数部分从右向左,小数部分从左向右,“三位一体,不足补零。” 举例:(.1111)B =(010 101 100)O=()O 2、二进制转换成十进制 转换原则:让二进制各位上的系数乘以对应的权,然后求其和。 举例:()B =(1×22+1×21+1×20+1×2-1+1×2-2)D=()D 3、二进制转换成十六进制 转换原则:以小数点为中心,整数部分从右向左,小数部分从左向右,“四位一体,不足补零”。 举例:()B =(0001 0101 )H = (1 5 )H 4、八进制转换成二进制 转换原则:将八进制上每一位数码“一分为三”,即可得二进制。 举例:()O =(111 110 011)B

常见的进制转换方法

一:简述: 进位计数制:是人们利用符号来计数的方法。一种进位计数制包含一组数码符号和两个基本因素。 (1)数码:用不同的数字符号来表示一种数制的数值,这些数字符号称为”数码”。 (2)基:数制所使用的数码个数称为”基”。 (3)权:某数制每一位所具有的值称为”权”。 二:进制转换的理论 1、二进制数、十六进制数转换为十进制数:用按权展开法 把一个任意R进制数a n a n-1 ...a1a0 . a-1a-2...a-m 转换成十进制数,其十进制数值为每一位数字与其位权之积的和。 a n×R n+ a n-1×R n-1+…+ a1×R 1+ a0×R0+ a-1×R-1+ a-2×R-2 + …+ a-m×R-m 2、十进制转化成R进制 十进制数轮换成R进制数要分两个部分: 整数部分:除R取余数,直到商为0,得到的余数即为二进数各位的数码,余数从右到左排列(反序排列)。 小数部分:乘R取整数,得到的整数即为二进数各位的数码,整数从左到右排列(顺序排列)。 3、十六进制转化成二进制 每一位十六进制数对应二进制的四位,逐位展开。 4、二进制转化成十六进制 将二进制数从小数点开始分别向左(对二进制整数)或向右(对二进制小数)每四位组成一组,不足四位补零。 三、具体实现 1、二进制转换成十进制 任何一个二进制数的值都用它的按位权展开式表示。 例如:将二进制数(10101.11)2转换成十进制数。 (10101.11)2=1*24+0*23+1*22+0*21+1*20+1*2-1+1*2-2 =24+22+20+2-1+2-2=(21.75)10 2、十进制整理转换成二进制 将十进制整数转换成二进制整数采用“除2取倒余法”。 即将十进制整数除以2,得到一个商和一个余数;再将商除以2,又得到一个商和一个余数; 以此类推,直到商等于零为止。 每次得到的余数的倒排列,就是对应二进制数的各位数。 于是,结果是余数的倒排列,即为: (37)10=(a5a4a3a2a1a0)2=(100101)2 3、十进制小数转换成二进制小数 十进制小数转换成二进制小数是用“乘2取整法”。即用2逐次去乘十进制小数, 将每次得到的积的整数部分按各自出现的先后顺序依次排列,就得到相对应的二进制小数。 将十进制小数0.375转换成二进制小数,其过程如下:

计算机各种进制转换

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 * 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 6.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

2.8.16.之间的进制转换

第六章二进制、八进制、十六进制 6.1 为什么需要八进制和十六进制? 6.2 二、八、十六进制数转换到十进制数 6.2.1 二进制数转换为十进制数 6.2.2 八进制数转换为十进制数 6.2.3 八进制数的表达方法 6.2.4 八进制数在转义符中的使用 6.2.5 十六进制数转换成十进制数 6.2.6 十六进制数的表达方法 6.2.7 十六进制数在转义符中的使用 6.3 十进制数转换到二、八、十六进制数 6.3.1 10进制数转换为2进制数 6.3.2 10进制数转换为8、16进制数 6.4 二、十六进制数互相转换 6.5 原码、反码、补码 6.6 通过调试查看变量的值 6.7 本章小结 这是一节“前不着村后不着店”的课。不同进制之间的转换纯粹是数学上的计算。不过,你不必担心会有么复杂,无非是乘或除的计算。 生活中其实很多地方的计数方法都多少有点不同进制的影子。 比如我们最常用的10进制,其实起源于人有10个指头。如果我们的祖先始终没有摆脱手脚不分的境况,我想我们现在一定是在使用20进制。 至于二进制……没有袜子称为0只袜子,有一只袜子称为1只袜子,但若有两袜子,则我们常说的是:1双袜子。 生活中还有:七进制,比如星期。十六进制,比如小时或“一打”,六十进制,比如分钟或角度…… (该版课程的内容更新及订正均已停止)

旧版课程打包下载 ---------------------------------- [想看涵盖“面向对象”、“图形编程”、“泛型编程”…… 的“最新2008年版白话C++”课程,请点击!] (另有: 博客版) 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 二、八、十六进制数转换到十进制数

各种进制之间的转换(可编辑修改word版)

一:十进制数转换成二进制数。 随便拿出一个十进制数“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 进制表达出来的一个数值,转换成八进制数十多少?

各种进制之间的转换方法.docx

各种进制之间的转换方法 ⑴二进制 B 转换成八进制 Q:以小数点为分界线,整数部分从低位到高位,小数部分从高位到低位, 每 3 位二进制数为一组,不足 3 位的,小数部分在低位补0,整数部分在高位补0,然后用 1 位八进制的数字来表示,采用八进制数书写的二进制数,位数减少到原来的1/3 。 例:◆二进制数转换成八进制数:= 110 110 .101 100B ↓↓↓↓ 6 6. 5 4 = ◆八进制数转换成二进制数: 36. 2 4Q ↓↓↓↓ 011 110.010 100 = ◆八进制数和二进制数对应关系表 八进制 Q01234567 二进制 B000001010011100101110111 ⑵二进制数 B 转换成十六进制数 H:以小数点为分界线,整数部分从低位到高位,小数部分从高位到 低位,每 4 位二进制数为一组,不足 4 位的,小数部分在低位补 0,整数部分在高位补 0,然后用 1位十六进制的数字来表示,采用十六进制数书写的二进制数,位数可以减少到原来的1/4 。 例:◆二进制数转换成十六进制数: . 100111B = 1011 0101 1010.1001 1100B ↓↓↓↓↓ B5A.9 C = 5A ◆十六进制数转换成二进制数: = A B. F EH ↓↓↓↓ 1010 1011. 1111 1110 =. 1111111B ◆十六进制数、十进制数和二进制数对应关系表 十六进制 H0123456789A B C D E F 十进制 D0123456789101112131415二进制 B0000000100100011010001010110011110001001101010111100110111101111⑶八进制数 Q转换成十六进制数H:八进制数 Q和十六进制数 H 的转换要通过二进制数 B 来实现,即 先把八进制数Q转换成二进制数B,再转换成十六进制数H。 例:◆八进制数转换成十六进制数: = 111 100 000 010. 100101B =. 100101B = 1111 0000 0010.1001 0100B = F 02.9 4H = ◆十六进制数转换成八进制数: =0001 1011 . 1110B = = 011 011.111B = 33.7Q = ⑷二进制数 B 转换成十进制数D:利用二进制数 B 按权展开成多项式和的表达式,取基数为2,逐项 相加,其和就是相应的十进制数。

数制及数制之间的相互转换

《数字电路与逻辑设计》 教 案 试讲教师:孙发贵 工作单位:北京化工大学北方学院

教学内容与过程 (一)讲解新课 一、数制 多位数码中每一位的构成方法,及从低位到高位的进位规则。 1、十进制数 用(N )D 或(N )10表示。 以10为基数的计数体制 有十个数码:0 、1、2、3、4、5、6、7、8、9 进位规则:逢十进一,借一当十 式中,10为基数; 10i 为第i 位的权; K i 为基数“10”的第i 次幂的系数。 例: 2、二进制数 用(N )B 或(N )2表示。 以2为基数的计数体制 只有两个数码:0、1 进位规则:逢二进一,借一当二 式中,2为基数;2i 为第i 位的权;K i 为基数“2”的第i 次幂的系数。 例:(101.11)2 =1×22+0×21+1×20 +1×2-1+1×2-2= 5.75 3、十六进制 用(N )H 或(N )16表示。 有十六个数码:0、1、2、3、4、5、6、7、8、9、A(10)、B(11)、C(12)、D(13)、E(14)、F(15) 进位规则:逢十六进一,借一当十六 式中,16为基数;16i 为第i 位的权; K i 为基数“16”的第i 次幂的系数。 例:(2A.7F)16=2?161+10 ?160+7?16-1+ 15?16-2 =(42.4960937)10 2 101210105107103104101(143.75)--?+?+?+?+?=

4、八进制用(N)O或(N)8表示。 有八个数码:0、1、2、3、4、5、6、7 进位规则:逢八进一,借一当八 归纳:N 式中,N为基数;N i为第i位的权; K i为第i位的系数。 二、数制之间的转换 1、二、八、十六进制转换为十进制: 二进制、八进制、十六进制转换成十进制时,只要将它们按权展开,求出各加权系数的和,便得到相应进制数对应的十进制数。 例: 2、十进制转换为二进制 (1)整数转换:采用连续除基取余,逆序排列法,直至商为0。(转换过程写在黑板上)化为二进制数的方法如下: 例:将(173) 10 (2)小数转换:采用连续乘基取整,顺序排列法。 例:将(0.8125)10化为二进制小数。

进制转换方法总结

信息的编码 再问学生计算机存储信息是不是都采用了二进制数二进制也存在缺点,二进制都用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

进制之间转换(含小数部分)

二、八、十、十六之间的转换 1、十进制与二进制之间的转换 (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转换为二进制(保留到小数点第四位)

python各进制之间转换

python各进制之间转换 # global definition # base = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F] base = [str(x) for x in range(10)] + [ chr(x) for x in range(ord('A'),ord('A')+6)] # 二进制to 十进制: int(str,n=10) def bin2dec(string_num): return str(int(string_num, 2)) # 十六进制to 十进制 def hex2dec(string_num): return str(int(string_num.upper(), 16)) # 十进制to 二进制: bin() def dec2bin(string_num): num = int(string_num) mid = [] while True: if num == 0: break num,rem = divmod(num, 2) mid.append(base[rem]) return ''.join([str(x) for x in mid[::-1]]) # 十进制to 八进制: oct()

# 十进制to 十六进制: hex() def dec2hex(string_num): num = int(string_num) mid = [] while True: if num == 0: break num,rem = divmod(num, 16) mid.append(base[rem]) return ''.join([str(x) for x in mid[::-1]]) # 十六进制to 二进制: bin(int(str,16)) def hex2bin(string_num): return dec2bin(hex2dec(string_num.upper())) # 二进制to 十六进制: hex(int(str,2)) def bin2hex(string_num): return dec2hex(bin2dec(string_num))

进制之间的相互转换

十进制转换为r进制的方法(看例子很容易理解,亲,加油~) 将十进制数转化为r进制数时,要将数的整数部分和小数部分分别进行转 换,分别按除r取余数和乘r取整数两种不同的方法来完成。 如十进制转化为二进制的方法是:对整数部分,用2去除,取其余数为转换后的二进制整数数字,直到商为0结束,且注意先得到的余数为所求结果的地位;对小数部分,用2去乘,取乘机的整数部分为转换后的二进制小数部分,注意先得到的整数为二进制小树的高位 如101.1 对整数部分 101/2=50 余1 50/2=25 余 0 25/2=12 余1 12/2=6 余0 6/2=3 余0 3/2=1 余1 1/2=0 余1 先得到的余数为结果的低位,所以整数部分的结果为 1100101 对小数部分 01*2=0.2 取整数0 0.2*2=0.4 0 0.4*2=0.8 0 0.8*2=1.6 1 0.6*2=1.2 1 0.2*2=0.4 0 0.4*2=0.8 0 0.8*2=1.6 1 先得到的整数为小数的高位,即为0.00011001 所以结果为1100101.000110 即101.1(十进制)=1100101.00011001(二进制) 同样,将十进制转化为八进制或十六进制时,整数部分用除以8 或16取余数处理,小数部分用乘8活16取整来处理。 266(十进制)=10A(十六进制) 266/16=16 余10(A) 16/16=1 余0 1/16=0 余1 所以266(十进制)=10A(十六进制) 0.8125(十进制)=0.64(八进制) 0.8125*8=6.5 取整数6 0.5*8=4.0 取整数4 所以0.8125(十进制)=0.64(八进制)

相关文档
相关文档 最新文档