first day 进制转换

1.计算机中采用二进制,因为二进制具有运算简单,易实现且可靠,为逻辑设计提供有利途径、节省设备等优点,为了便于描述,又长用八、十六进制作为二进制的缩写,一般技术都采用进位计数,其特点:

(1)逢N进一,N是每种进位计数制表示一位数所需要符号数目为基数。

二进制:逢二进一,借一当二

八进制:逢八进一,借一当八

十六进制:。。。。。。。。

(2)数制转换 不同进位计数制之间的转换原则:不同进位计数制之间的转换是根据两个有理数如相等,则两数的整数和分数部分一定分别相等的原则进行的,若转换前两数相等,转换后仍必须相等。

十进制:有十个基数:0,1,2,3,4,5,6,7,8,9

二进制:有两个基数:0,1

八进制:有八个基数;0,1,2,3,4,5,6,7

十六进制:有十六个基数:0—9,A,B,C,D,E,F(A=10,B=11,C=12,D=13,E=14,F=15)

一、十进制与其他进制之间的转换

1)十进制—二进制

十进制除以2,除至0时所得余数按反方向写出,即为二进制数

例:36除以2得出的商依次是  18  9  4  2  1

所得余数依次为           0  0  1  0   0  1

将余数从右往左写        1  0  0  1   0   0

所得出100100为二进制数

小技巧:为方便可将公式变为以下形式:


二进制

右数位数

1 2 3 4 5 6 7 8
十进制数 1 2 4 8 16 32 64 128
公式原型 20  21  22  23  24  25  26  27

2)二进制—十进制

计算公式:a*20+b*21+c*22+....+m*2(n-1)=

以上公式,a表示二进制数的右边第一位的数,b表示二进制数的右边第二位的数,c表示二进制数的右边第三位的数.....m表示二进制数的右边第(n-1)位的数

例:1011001由右至左成为十进制为89

1*20+0*21+0*22+1*23+1*24+0*25+1*26

=1+8+16+64

=89

二、1)十进制—八进制

从右第n位 8 7 6 5 4 3 2 1
8(n-1) 87 86 85 84 83 82 81 80
十进制下的实际数 2097152 262144 32768 4096 512 94 8 1

(2)同二进制转十进制

计算公式      a*80+b*81+c*82+d*83+.....+m*8(n-1)=

以上公式中,a表示八进制数的右边第一位的数,b表示八进制数的右边第二位的数,c表示八进制数的右边第三位的数.....m表示八进制数的右边第(n-1)位的数。

例:2137由右至左成为十进制为1119

7*80+3*81+1*82+2*83

=7+24+64+1024

=1119

三、1)十进制—十六进制

十进制数除以十六

0,1,2,3,4,5,6,7,8,9,A(10),B(11),C(12),D(13),E(14),F(15)

十进制数逐次整除16,至商为0,所得余数按相反顺序写出,即为其十六进制数。

例:75除以16得出的余数为11(B)      4

余数从右向左写为   4B

2)十六进制—十进制

同二进制、八进制一样

计算公式:  a*160+b*161+c*162+d*163+.....+m*16(n-1)=

以上公式中,a表示十六进制数的右边第一位的数,b表示十六进制数的右边第二位的数,c表示十六进制数的右边第三位的数.....m表示十六进制数的右边第(n-1)位的数。

163 162 161 160
4096 256 16 1

例:1BC2由右至左成为十进制为7106

2*160+12*161+11*162+1*161

=2+192=2816+4096

=7106

四、其他进制之间的转换

二进制转换为八进制:对于整数,采用从右到左每三组一组,不够三位数的在其左边补齐0,每组单独转换出来,即为八进制数。

例:(001             101            111        011)

1                 5                7            3

所以,(1573)即为所得八进制数。

八进制转换为二进制:将每位八进制由三位二进制数代替,即可完成转换。

例:(1         7           3         5)

001       111        011    101

所以,(1111011101)即为所得二进制数。

二进制转换为十六进制:由于2的4次方+16,所以依照二进制与八进制的转换方法,将二进制数的每四位用一个十六进制数码来表示,整数部分以小数点为界点从右往左每四位一组转换,小数部分从小数点开始自左向右每四位一组进行转换。

例  :     (1001         0111        0111       1001)

9              7              7             9

所以,(9779)为所得的十六进制数

十六进制转换为二进制:只要将每一位十六进制数用四位相应的二进制数表示,即可完成转换。

例   :   (8         7         6         5)

1000    0111   0110     0101

所以,(1000 0111 0110 0101)为所得的二进制数。

时间: 2024-10-18 09:18:48

first day 进制转换的相关文章

任意进制转换算法

任意进制转换算法 N年没有写博客,发个进制转换的玩下,支持负数:功能属于简化版的 Convert.ToInt32 ,特点是: 1.任意位,如:0,1(二进制),0...7(八进制),0...9,A...F(16进制),0...N(N进制),或者是:[email protected]#$%^&*(8进制,字符符号),也可以是中文. 2.8 byte 最大长度. 3.C#源码. 最近写markdown格式习惯啦,cnblogs啥时候全改掉算了,别用这个htmleditor算了. 先说明下进制转换的基

03 php 数据类型:整数,进制转换,浮点,字符,布尔,数组,空类型,类型转换,算术运算,比较运算

03 数据类型:整数,进制转换,浮点,字符,布尔,数组,空类型,类型转换, 算术运算,比较运算,逻辑运算,短路现象, 三目运算符,字符型运算: 数据类型 整体划分 标量类型: int, float, string, bool 复合类型: array,     object 特殊类型: null,     resouce 整数类型int, integer 3种整数表示法 十进制写法:123: $n1 = 123; 八进制写法: 0123 $n2 = 0123; 十六进制写法: 0x123 $n3

计算机进制转换

一.计算机只认识0和1,二进制. 二.2进制转换成 8进制 和 16进制,如下图: 二进制 > 八进制 :  研究上图发现,3位最高二进制可以用来表示一位八进制.所以,将二进制分解每3位,不够前面补0,然后每3位转换为10进制,顺序排列即可. 二进制 > 十六进制  :4位最高二进制可以用来表示一位十六进制.所以,将二进制分解每4位,不够前面补0,然后每4位转换为10进制,超过9用字母表示即可.顺序排列即可. 如下: 二进制 > 十进制:   11001001 = 2^7+2^6+2^3

原理之一,进制转换

原理之一,进制转换 日常生活中采用个数字都是十进制,而计算机采用的是运算更简单.易实现且可靠,为逻辑设计提供了有力途经的二进制,除此之外还有八进制和十六进制作为二进制的缩写. 进制:逢N进一,N是每种进位计数制表示一位数所需要的符号数目为基数. 二进制:逢二进一,借一当二,包含的数字(0.1) 八进制:逢八进一,借八当一,包含(0.1.2.3.4.5.6.7) 十六进制:逢十六当一,以一当十六,包含(0.1.2.3.4.5.6.7.8.9.10(A).11(B).12(C).13(D).14(E

NOIP2000 进制转换

题一   进制转换              (18分)  问题描述      我们可以用这样的方式来表示一个十进制数: 将每个阿拉伯数字乘以一个以该数字所处位置的(值减1)为指数,以10为底数的幂之和的形式.例如:123可表示为 1*102+2*101+3*100这样的形式. 与之相似的,对二进制数来说,也可表示成每个二进制数码乘以一个以该数字所处位置的(值-1)为指数,以2为底数的幂之和的形式.一般说来,任何一个正整数R或一个负整数-R都可以被选来作为一个数制系统的基数.如果是以R或-R为基

进制进制进制~转换

从刚学计算机器就对进制转换有着莫名的反感,2进制 8进制 10进制 16进制各种转换. 下面就说下逻辑地址转换成物理地址的求法吧 首先,用户输入一个16进制的数字cin>>hex>>logic_add;   hex的意思是告诉计算机输入的数是以16进制方式输入的 这个时候你要是输出cout<<logic_add;  你会发现输出的是把这个16进制的数转换为10进制以后输出的结果 cout<<hext<<logic_add;这样输出的才是16进制.

黑马程序员------进制转换

------<a href="http://www.itheima.com" target="blank">Java培训.Android培训.iOS培训..Net培训</a>.期待与您交流! ------- 在java中数字的表现形式一般有二进制,八进制,十进制,十六进制等,在平时的编程中我们可以通过java提供的API函数方便的实现各个进制间的转换,如:Integer.toHexString(int i)--十进制转十六进制:Integer

c语言之进制转换(栈实现)

从上两篇博客中我们可以知道,栈具有后进先出的特性,而进制转换的打印输出刚好与计算过程相反,满足栈这后进先出的特性, 所以可以用栈很快的实现进制转换,下面是用栈实现进制转换的c函数 void conversion (SqStack *pstack,unsigned int N, const unsigned int d){ if( pstack == NULL)//当传入参数为指针,必须判空 exit(-1); int mod ;//保存mod = N %d while( N != 0){ mod

进制转换-课后作业

一. 其他进制转换成十进制 1.十六进制转成十进制 41bd  = 4*16^3+1*16^2+11*16+13 = 16384+256+176+13=16829 a10c.8  = 10*16^3+1*16^2+0+12  .  8/16 = 40960+256+12.5=41228.5 2.八进制转成十进制 146.1  = 1*8^2+4*8+6 . 1/8 = 64+32+6.125=102.125 5312.2  = 5*8^3+3*8^2+1*8+2 . 2/8 = 2560+192

大数进制转换问题

在数据结构课关于栈的这一章中,我们都学过用"模2取余法"来将一个10进制数转换为一个二进制数,进而可以推广到"模n取余法",经其转换为n进制(n任意指定). 确实,这是一个很基础的题目,可你是否想过如果这个10进制数是一个大数(其位数可能上千位,此时用一般数据类型肯定是会溢出的),那么这个问题又如何来求解呢? 当然,也许你会说很简单嘛,自己写一个大数类(当然至少要写一个大数除法才行),或者你用的是Java这种现代化语言,就更轻松了,直接用BigInteger这样的大