很完整的2、8、10、16进制转换方法
二进制,十进制,八进制,十六进制之间的转换
⼆进制,⼗进制,⼋进制,⼗六进制之间的转换计算机内部只有⼆进制,包括字符数据等int i = 15; //00000000 00000000 00000000 00001111 ==> 1字节= 8位1Byte = 8 bitint 有4个字节,即32位char c = 'a'; //00000000 01000001计算机内部使⽤的⼆进制位都是补码的形式(此处⽤1个字节表⽰)15:原码00001111 ==>补码 00001111整数的原码和补码相同-15:15的原码 ==>反码+1 ==> 补码原码00001111 ==> 反码11110000 +1 ==>补码 11110001如果⽤2个字节表⽰-15的反码原码00000000 00001111反码11111111 11110001如果⽤3个字节表⽰-15的反码原码00000000 00000000 00001111反码11111111 11111111 11110001以此类推可以⽤System.out.println(Integer.toBinaryString(a));打印验证int i=-1;//11111111 11111111 11111111 11111111int i = -2147483648(int中最⼩的负数)//100000000 00000000 00000000 00000000⼗进制是⼈类的习惯计算机在输出时候根据⼈类习惯输出10进制赋值的时候默认是赋值10进制计算机默认接受10进制,⾃动转换为⼆进制数据16进制是⼆进制的简写⽅便⼈类书写和记忆0xff -> 11111111转换int x = 020;//⼋进制 0开头⼋进制==>⼗进制020==>2*8+00120 ==> 1*8^2 + 2*8^1 + 001234 --> 1*8^3 + 2*8^2 + 3*8 +4x = 0x2E;//⼗六进制 0x开头⼗六进制 ==>⼗进制x=0x2E; ==> 2*16^1 + e =46x= 0x1234 ==> 1*16^3 + 2*16^2 + 3*16 + 4⼆进制 ==> ⼗进制0000 1111 ==> 1*2^3 + 1*2^2 + 1*2 + 1 =150100 1001 ==> 1*2^6 + 1*2^3+1 =⼗进制 ==>⼆进制1)除⼆取余28/2 14/2 7/2 3/2 1/2 00 0 1 1 1 0 ==>倒序1 110037/2 18/2 9/2 4/2 2/21 0 1 0 1 ==>倒序(如果需要则前⾯补0) 0001 01012)对应权重 (简化算法)int x =37;32 + 4 +10010 0101 // 128 64 32 16 8 4 2 10 0 1 0 0 1 0 1998998 - 512 = 486 - 256 = 230 -128 = 102 - 64 = 38 -32 =6-4 =2-2 =01111100110 //512 256 128 64 32 16 8 4 2 11 1 1 1 1 0 0 1 1 0⼋进制 ==> ⼆进制int x = 01234;⽤三个⼆进制位表⽰⼀个⼋进制位000 001 010 011 100⼗六进制 ==> ⼆进制int x = 0x1234; ⽤4个⼆进制表⽰⼀个16进制位0001 0010 0011 01000x12345678==>0001 0010 0011 0100 0101 0110 0111 1000⼆进制 ==> 16进制0000 0111 1111 1110 ==> 0x07FE;⼀般⽤16进制表⽰⼆进制例x = 0x7FE ;//0000 0111 1111 1110,直接赋值则以为是⼋进制(因为以0开头)。
二进制八进制十进制十六进制之间的进制转换
二进制八进制十进制十六进制之间的进制转换详情可参考百度百科:进制转换这个词条【主要搞懂1和2两条,其他的进制之间的转化就迎刃而解,很好懂了】1. 十进制-> 二进制:将这个十进制数连续除以2的过程,第一步除以2,得到商和余数,将商再继续除以2,得到又一个商和余数,直到商为0。
最后将所有余数倒序排列,得到的数就是转换成二进制的结果。
2. 二进制-> 十进制:二进制数第1位的权值是2的0次方,第2位的权值是2的1次方,第3位的权值是2的2次方。
(例如1258这个十进制数,实际上代表的是:1x1000+2x100+5x10+8x1=1258)那么1011这个二进制数,实际上代表的是:1x8+0x4+1x2+1x1=11(十进制数11)。
(这里的8就是2的3次方,4就是2的2次方,2就是2的1次方,1就是2的0次方)3. 十进制-> 八进制:十进制数转换成八进制的方法,和转换为二进制的方法类似,唯一变化:除数由2变成8。
4. 八进制-> 十进制和转换为二进制的方法类似,唯一变化是,底数变成8,第1位表示8的0次方,第二位表示8的一次方,第三位表示8的2次方,第四位表示8的3次方。
例如1314这个八进制数,十进制数就是1x512+3x64+1x8+4x1=716(十进制)5. 十进制-> 十六进制10进制数转换成16进制的方法,和转换为2进制的方法类似,唯一变化:除数由2变成16。
十六进制是0123456789ABCDEF这十六个字符表示。
那么单独一个A就是10,单独一个B就是11,CDEF,就分表表示12,13,14,15。
而10这个十六进制数,实际就是十进制中的16。
6. 十六进制-> 十进制和转换为二进制的方法类似,唯一变化是,底数变成16,第1位表示16的0次方,第二位表示16的一次方,第三位表示16的2次方,第四位表示16的3次方。
7. 二进制<--->八进制,之间的相互转换,更简单一些,因为8本身是2的三次方。
很完整的2、8、10、16进制转换方法
比如 00000000 00000000 00000000 00000101 是 5的 原码。
生活中其实很多地方的计数方法都多少有点不同进制的影子。
比如我们最常用的10进制,其实起源于人有10个指头。如果我们的祖先始终没有摆脱手脚不分的境况,我想我们现在一定是在使用20进制。
至于二进制……没有袜子称为0只袜子,有一只袜子称为1只袜子,但若有两袜子,则我们常说的是:1双袜子。
生活中还有:七进制,比如星期。十六进制,比如小时或“一打”,六十进制,比如分钟或角度……
6.2.5 十六进制数转换成十进制数
2进制,用两个阿拉伯数字:0、1;
8进制,用八个阿拉伯数字:0、1、2、3、4、5、6、7;
10进制,用十个阿拉伯数字:0到9;
16进制,用十六个阿拉伯数字……等等,阿拉伯人或说是印度人,只发明了10个数字啊?
16进制就是逢16进1,但我们只有0~9这十个数字,所以我们用A,B,C,D,E,F这五个字母来分别表示10,11,12,13,14,15。字母不区分大小写。
我们找到问号字符(?)的ASCII值是63,那么我们可以把它转换为八进值:77,然后用 ‘\77′来表示’?'。由于是八进制,所以本应写成 ‘\077′,但因为C,C++规定不允许使用斜杠加10进制数来表示字符,所以这里的0可以不写。
事实上我们很少在实际编程中非要用转义符加八进制数来表示一个字符,所以,6.2.4小节的内容,大家仅仅了解就行。
0000 = 0 + 0 + 0 + 0 = 0 0
二进制数要转换为十六进制,就是以4位一段,分别转换为十六进制。
如(上行为二制数,下面为对应的十六进制):
二进制八进制十进制十六进制之间的转换算法
二进制八进制十进制十六进制之间的转换算法二进制、八进制、十进制和十六进制是计算机中常用的数字表示方法。
它们之间的转换可以通过一些算法来实现。
下面将介绍这些算法,并给出详细的解释。
1.二进制转八进制:将二进制数从右往左每3位一组进行分组,不足3位的可以在左侧补0。
然后将每组的二进制数转换为对应的八进制数。
如:分组:11010110转换为八进制数:3262.二进制转十进制:二进制数转换为十进制数可以使用加权的方式计算。
从最右边的位开始,每一位的值乘以2的对应次幂(从0开始),然后将所有结果相加。
如:二进制数:1101转换为十进制数:(1*2^3)+(1*2^2)+(0*2^1)+(1*2^0)=133.二进制转十六进制:将二进制数从右往左每4位一组进行分组,不足4位的可以在左侧补0。
然后将每组的二进制数转换为对应的十六进制数。
如:分组:110110101转换为十六进制数:DA14.八进制转二进制:将八进制数的每一位转换为对应的3位二进制数。
如:八进制数:326转换为二进制数:0110101105.八进制转十进制:八进制数转换为十进制数可以使用加权的方式计算。
从最右边的位开始,每一位的值乘以8的对应次幂(从0开始),然后将所有结果相加。
如:八进制数:326转换为十进制数:(3*8^2)+(2*8^1)+(6*8^0)=2146.八进制转十六进制:先将八进制数转换为二进制数,然后将二进制数转换为十六进制数。
如:八进制数:326转换为二进制数:011010110转换为十六进制数:DA67.十进制转二进制:十进制数转换为二进制数可以使用除2取模的方式计算。
将十进制数一直除以2,直到商为0为止,然后将每一步的余数倒序排列即可。
如:十进制数:13转换为二进制数:11018.十进制转八进制:十进制数转换为八进制数可以使用除8取模的方式计算。
将十进制数一直除以8,直到商为0为止,然后将每一步的余数倒序排列即可。
如:十进制数:214转换为八进制数:3269.十进制转十六进制:十进制数转换为十六进制数也可以使用除法和取模的方式计算。
十进制转二进制和8进制还有16进制
十进制转2进制总的来说就是将需要转换的不断除以2,然后得到每次除2的余数,最后将第一个余数放最左边,一次向右排列,就是这个数的2进制码。
例如 83 :第一次除2, 商为41,余数为1;第二次让前一次商除2,商为20,余数为1; 第三次让前一次商除2,商为10,余数为0; 第四次让前一次商除2,商为5, 余数为0; 第五次让前一次商除2,商为2, 余数为1; 第六次让前一次商除2,商为1, 余数为0。
最后一个商是1最后2进制代码为:1010011;2进制转10进制:以上面2进制码为例:1010011,从最右边开始算,让每一位乘以2的n 次方,n 从0开始,结果相加 (1* 2^0)+( 1* 2^1)+(0* 2^2)+(0* 2^3)+(1*2^4)+( 0*2^5)+(1*2^6) = 83;2进制转16进制:仍然以上面2进制代码为例,1010011,将此转换为8进制,从最右边开始,以4位2进制代码为一个单位划分:0101 0011,将上面2进制代码划分(最后不足4位的补0),将每组看做单独的2进制代码转成10进制的:第一组0101 转换成10进制:(1*2^0)+(0*2^1)+(1*2^2)+(0*2^3)=5;第二组0011 转换成10进制:(1*2^0)+(1*2^1)+(0*2^2)+(0*2^3)=3;第一组和第二组放一起,以组的顺序放:53;这就是16进制代码。
2进制转8进制同16进制一样,分组,不过是每组为3位2进制码;10进制转8进制和16进制将10进制先转换为2进制,在转换为16进制,或8进制。
不同进制表示只是单位不同例如一个10进制数918,10进制单位是10的n 次方,它的表示是:9*10^2 + 1*10^1 + 8*10^0;一个2进制数110,2进制单位是2的n 次方,它的表示是:1*2^2 + 1*2^1 + 0*2^0;一个16进制数918,16进制单位是16的n 次方,它的表示是:9*16^2 + 1*16^1 + 8*16^0;就像上面2进制转16进制 结果是53 ,将16进制转换成10进制就是这么算: 5*16^1 + 3*16^0 = 80 +3 = 83;不知道这么说你懂不懂,不懂就继续问我,自己想几个数算算,其实很简单的。
16、10、8、2进制之间的转换.wps
1. 十-----> 二(25)(十)整数部分:25/2=12 (1)12/2=6 06/2=3 03/2=1 (1)1/2=0 (1)然后我们将余数按从下往上的顺序书写就是:11001,那么这个11001就是十进制25的二进制形式(25)(十)=(11001)(二)2. 二----> 十(11001)(二)整数部分:下面的出现的2(x)表示的是2的x次方的意思1*2(4)+1*2(3)+0*2(2)+0*2(1)+1*2(0)=25(11001)(二)=(25)(十)3. 十----> 八(25)(十)整数部分:25/8=3 (1)3/8 =0 (3)然后我们将余数按从下往上的顺序书写就是:31,那么这个31就是十进制25的八进制形式(25)(十)=(31)(八)4. 八----> 十(31)(八)3*8(1)+1*8(0)=25所以(31)(八)=(25)(十)5. 十----> 十六(25)(十)25/16=1 (9)1/16 =0 (1)然后我们将余数按从下往上的顺序书写就是:19,那么这个19就是十进制25的十六进制形式所以:(25)(十)=(19)(十六)6. 十六----> 十(19)(十六)1*16(1)+9*16(0)=25所以(19.)(十六)=(25)(十)1. 二----> 八(11001)(二)从后往前每三位一组,缺位处有0填补,然后按十进制方法进行转化,则有:001=1011=3然后我们将结果按从下往上的顺序书写就是:31,那么这个31就是二进制11001的八进制形式所以:(11001)(二)=(31)(八)2. 八----> 二(31)(八)从后往前每一位按十进制转化方式转化为三位二进制数,缺位处用0补充则有:1---->1---->0013---->011然后我们将结果按从下往上的顺序书写就是:11001,那么这个11001就是八进制31的二进制形式说明,关于十进制的转化方式我这里就不再说了,上一篇文章我已经讲解了!所以:(31)(八)=(11001)(二)3. 十六----> 二(19)(十六)整数部分:从后往前每位按十进制转换成四位二进制数,缺位处用0补充则有:9---->10011---->0001(相当于1)二进制转十进制从最后一位开始算,依次列为第0、1、2...位第n位的数(0或1)乘以2的n次方得到的结果相加就是答案例如:01101011.转十进制:第0位:1乘2的0次方=11乘2的1次方=20乘2的2次方=01乘2的3次方=80乘2的4次方=01乘2的5次方=321乘2的6次方=640乘2的7次方=0然后:1+2+0+8+0+32+64+0=107.二进制01101011=十进制107. 1010101 1+0+8+0+32+0+64十六----> 二;二----> 十六二进制和十六进制的互相转换比较重要。
二进制_八进制_十进制_十六 进制之间的相互转换
二进制,八进制,十进制,十六进制之间的相互转换和相关概念二进制:计算机只认识0或1,也就是高电平和低电平.所以所有的数据格式最终会转化为2进制形式,计算机硬件才能识别。
二进制逢二进一,八进制逢八进一,十进制逢十进一,十六进制逢十六进一。
下边是各进制之间的转换公式.二进制转十进制0110 0100(2) 换算成十进制第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二进制转八进制可采用8421法1010011(2)首先每三位分割即: 001,010,011不足三位采用0补位.然后采用8421法: 001=1010=2011=3所以转换成8进制是123二进制转十六进制1101011010100(2)首先每四位分割即: 0001,1010,1101,0100不足四位采用0补位.然后采用8421法: 0001:11010:A1101:D0100:4所以转换成十六进制是1AD4十六进制当数字超过9后将采用A代替10,B代替11,C代替12,D代替13,E 代替14,F代替15;下边是十进制的各种转换:十进制转二进制6(10)10进制数转换成二进制数,这是一个连续除2的过程:把要转换的数,除以2,得到商和余数,将商继续除以2,直到商为0。
最后将所有余数倒序排列,得到数就是转换结果。
商余数6/2 3 03/2 1 11/2 0 1最后把余数从下向上排列写出110即是转换后的二进制.十进制转换八进制10进制数转换成八进制数,这是一个连续除8的过程:把要转换的数,除以8,得到商和余数,将商继续除以8,直到商为0。
最后将所有余数倒序排列,得到数就是转换结果。
120(10)商余数120/8 15 015/8 1 71/8 0 1最后把余数从下向上排列写出170即是转换后的八进制.十进制转换十六进制10进制数转换成十六进制数,这是一个连续除16的过程:把要转换的数,除以16,得到商和余数,将商继续除以16,直到商为0。
二、八、十、十六进制之间的相互转换
在计算机应用中,二进制使用后缀B表示;十进制使用后缀D表示,八进制用Q表示,十六制使用后缀H表示。
1、二、八、十六进制数转十进制各位数字分别乖以各自的基数的(N-1)次方,其和相加之和便是相应的十进制数。
个位,N=1;十位,N=2...举例:110B=1*2的2次方+1*2的1次方+0*2的0次方=0+4+2+0=6D110Q=1*8的2次方+1*8的1次方+0*8的0次方=64+8+0=72D110H=1*16的2次方+1*16的1次方+0*16的0次方=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 第四位最后得八进制数:12765十进制数十六进制如:76521转为十六进制16|765214782 ――9 第一位(个位)298 ――14 第二位18 ――10 第三位1 ――2 第四位最后得12AE93、二进制数转换八、十、十六进制数二进制转八进制:从小数点位置开始,整数部分向左,小数部分向右,每三位二进制为一组用一位八进制的数字来表示,不足三位的用0补足,就是一个相应八进制数的表示。
010110.001100B=26.14Q八进制转二进制反之则可。
二进制转十进制:当前位乘以基数2的(N-1)次方计算公式:二进制数据N位数字乘以2的N-1次方的积的总和例:10101011B=( )D数据1 0 1 0 1 0 1 1N-1位7 6 5 4 3 2 1 0相应的十进制值即为:27 +25+23+21+20=128+32+8+2+1=171二进制转十六进制:从小数点位置开始,整数部分向左,小数部分向右,每四位二进制为一组用一位十六进制的数字来表示,不足四位的用0补足,就是一个相应十六进制数的表示。
二进制 八进制 十进制 十六进制之间的转换方法
一、十进制与二进制之间的转换(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入。
二进制转换十进制,八进制,十六进制的方法
二进制转换十进制,八进制,十六进制的方法二进制转换十进制,八进制,十六进制的方法二进制转换十进制,八进制,十六进制的方法?2010-05-07 18:128进位当然就只有8个了,1~8 16进制16个,1~9,A~F 2进制2个,0,1算法都是和二进制的算法相同,求余数,反过来就是正确值如:25先来看二进制的算法25除以二商12余1 12除以二商6余0 6除以二商3余0 3除以二商1余1 1除以二商1余1答案将余数反过来:11001同理我们算八进制25除以8商3余1 3除以8商0余3答案将余数反过来:31计算机中常用的进制二进制、八进制、十六进制进制数字进位方法十进制0、1、2、3、4、5、6、7、8、9逢十进一二进制0、1逢二进一八进制0、1、2、3、4、5、6、7逢八进一十六进制0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F逢十六进一这些进制与我们日常生活中的进制有怎样的关系呢?我们日常生活中还有哪些进制?二进制八进制十进制十六进制1 11 110 22 211 33 3100 44 4101 55 5110 66 6111 7771000 10 88 1001 11 99 1010 12 10 A1011 13 11 B1100 14 12 C1101 1513D1110 16 14 E1111 17 15 F10000 20 16 10三、利用知识完成任务?二进制与十进制的转换。
?二进制转换成十进制把十进制数17转换二进制数。
2 17 1(最低位)2 80 24 02 20 11(最高位)结果等于10001?二进制转换成十进制把二进制数11011转换成十进制。
(11011)2=1×24+1×23+0×22+1×21+1×20=16+8+0+2+1=27?学生练习把十进制数37转换成二进制数,然后把算出的二进制结果再转换成十进数。
研究报告进制转换(二进制八进制十进制十六进制)
进制转换(二进制八进制十进制十六进制)1、二进制数、八进制数、十六进制数转十进制数有一个公式:二进制数、八进制数、十六进制数的各位数字分别乖以各自的基数的(N-1)次方,其和相加之和便是相应的十进制数。
个位,N=1;十位,N=2...举例:110B=1*2的2次方+1*2的1次方+0*2的0次方=0+4+2+0=6D110Q=1*8的2次方+1*8的1次方+0*8的0次方=64+8+0=72D110H=1*16的2次方+1*16的1次方+0*16的0次方=256+16+0=272D2、十进制数转二进制数、八进制数、十六进制数方法是相同的,即整数部分用除基取余的算法,小数部分用乘基取整的方法,然后将整数与小数部分拼接成一个数作为转换的最后结果。
例:见四级指导16页。
3、二进制数转换成其它数据类型3-1二进制转八进制:从小数点位置开始,整数部分向左,小数部分向右,每三位二进制为一组用一位八进制的数字来表示,不足三位的用0补足,就是一个相应八进制数的表示。
010110.001100B=26.14Q八进制转二进制反之则可。
3-2二进制转十进制:见13-3二进制转十六进制:从小数点位置开始,整数部分向左,小数部分向右,每四位二进制为一组用一位十六进制的数字来表示,不足四位的用0补足,就是一个相应十六进制数的表示。
00100110.00010100B=26.14H十进制转各进制要将十进制转为各进制的方式,只需除以各进制的权值,取得其余数,第一次的余数当个位数,第二次余数当十位数,其余依此类推,直到被除数小于权值,最后的被除数当最高位数。
一、十进制转二进制如:55转为二进制2|5527――1 个位13――1 第二位6――1 第三位3――0 第四位1――1 第五位最后被除数1为第七位,即得110111二、十进制转八进制如:5621转为八进制8|5621702 ―― 5 第一位(个位)87 ―― 6 第二位10 ―― 7 第三位1 ――2 第四位最后得八进制数:127658三、十进制数十六进制如:76521转为十六进制16|765214726 ――5 第一位(个位)295 ――6 第二位18 ――6 第三位1 ――2 第四位最后得1276516二进制与十六进制的关系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进制,如3A16 转为二进制为:3为0011,A 为1010,合并起来为00111010。
二进制、八进制、十进制、十六进制之间转换(含小数部分)
二进制、八进制、十进制、十六进制之间转换一、 十进制与二进制之间的转换(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入。
很完整编辑的8,10,16进制转换方法
很完整的2、8、10、16进制转换方法最近在研究C语言,因为要用到各进制间转换,所以收集了一些资料…这是一节“前不着村后不着店”的课。
不同进制之间的转换纯粹是数学上的计算。
不过,你不必担心会有么复杂,无非是乘或除的计算。
生活中其实很多地方的计数方法都多少有点不同进制的影子。
比如我们最常用的10进制,其实起源于人有10个指头。
如果我们的祖先始终没有摆脱手脚不分的境况,我想我们现在一定是在使用20进制。
至于二进制……没有袜子称为0只袜子,有一只袜子称为1只袜子,但若有两袜子,则我们常说的是:1双袜子。
生活中还有:七进制,比如星期。
十六进制,比如小时或“一打”,六十进制,比如分钟或角度……我们找到问号字符(?)的ASCII值是63,那么我们可以把它转换为八进值:77,然后用‘\77′来表示’?'。
由于是八进制,所以本应写成‘\077′,但因为C,C++规定不允许使用斜杠加10进制数来表示字符,所以这里的0可以不写。
事实上我们很少在实际编程中非要用转义符加八进制数来表示一个字符,所以,6.2.4小节的内容,大家仅仅了解就行。
6.2.5 十六进制数转换成十进制数2进制,用两个阿拉伯数字:0、1;8进制,用八个阿拉伯数字:0、1、2、3、4、5、6、7;10进制,用十个阿拉伯数字:0到9;16进制,用十六个阿拉伯数字……等等,阿拉伯人或说是印度人,只发明了10个数字啊?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 * 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(别忘了,在上面的计算中,A表示10,而F表示15)现在可以看出,所有进制换算成10进制,关键在于各自的权值不同。
二进制八进制十进制十六进制转换符号口诀
二进制八进制十进制十六进制转换符号口诀在计算机科学和数学领域中,二进制、八进制、十进制和十六进制是常见的数字表示方式。
它们之间的转换是非常重要的基础知识,也是程序员和计算机科学家必备的技能之一。
为了帮助大家更好地理解和记忆这些进制间的转换规则,下面我将共享一些口诀和技巧。
1. 二进制转八进制二八相对应,三位一组往前推。
二进制数按照从右往左每三位一组进行分组,不足三位的高位补零,每组对应一个八进制数,依次写出即为八进制数。
2. 八进制转二进制八二不难变,每位对应三二进。
八进制数每一位转换为对应的三位二进制数即可。
3. 二进制转十进制二进制转十进制,权次为从右到左。
按照权值展开式计算,将二进制数每一位乘以对应的权值然后相加即可得到十进制数。
4. 十进制转二进制十二不尽,倒着写恰当。
使用除以2取余法,可以将十进制数转换成二进制数。
5. 二进制转十六进制二十不迷路,四位对应一。
将二进制数每四位一组,不足四位的高位补零,然后根据十六进制数的映射关系进行转换。
6. 十六进制转二进制十六转二,恰恰好。
十六进制数转换成二进制数在显示器上进行比较方便,可以将每一位直接对应成四位二进制数即可。
总结:以上口诀和技巧是帮助我们更好地记忆和理解二进制、八进制、十进制和十六进制间的转换规则的方法。
通过这些口诀和技巧,我们可以更加灵活地进行进制间的转换,并且在实际的编程和计算中能够更加熟练地运用这些知识。
个人观点:掌握进制转换是计算机领域中非常基础且重要的知识,它不仅能够帮助我们更好地理解计算机底层的运行原理,还能够在实际的编程和运算中起到关键的作用。
我认为我们应该重视并且深入理解这一知识点,通过反复练习和使用,逐渐掌握这些转换规则,从而为计算机科学和编程领域的深入学习打下坚实的基础。
希望以上内容对你有所帮助,如有任何问题或不清楚的地方,欢迎随时交流讨论。
进制转换口诀和技巧是帮助我们更好地理解和记忆二进制、八进制、十进制和十六进制之间转换规则的重要方法。
二进制与十进制、八进制、十六进制之间的转换
3.八进制 使用的符号:0、1、2、3、4、5、6、7; 运算规则:逢八进一; 基为:8 在八进制数据后加英文字母“O”,
4.十六进制 使用的符号:采用0~9和A、B、C、D、E、F六个英文 字母一起共十六个代码。 运算规则:逢十六进一 基为:16 在十六进制数据后加英文字母“H”以示分别。
各数制的权
各数制中整数部分不同位的权为“基的n-1次方(n为数 值所在的位数,n的最小值取1)”,小数部分不同位的权 值为“基的-n次方”。
一个十进制数(135.7)01+5×100+7×10-1 如:十进制中,各位的权为10n-1
二进制中,各位的权为2n-1 十六进制中,各位的权为16n-1
制数时,从小数点开始,将二进制数的整数和 小数部分每四位分为一组,不足四位的分别在 整数的最高位前和小数的最低位后加“0”补足, 然后每组用等值的十六进制码替代,即得目的 数。十六进制数转换成二进制数时正好相反, 一位十六进制数用四位二进制数来替换。对于 有小数的数,要分小数和整数部分处理。
例: (111011.10101)2=(3B.A8)H
【例1】将(236)D转换成二进制。 转换过程如图1所示。
2 2 36 2 118 2 59 2 29 2 14 27 23 21 0
…………… 0 …………… 0 …………… 1 …………… 1 …………… 0 …………… 1 …………… 1 …………… 1
二进制数的低位 二进制数的高位
图1 将十进制数转变成二进制数
如(0.8125D)转成二进制的过程是:
二进制八进制16进制转换表
二进制八进制16进制转换表二进制、八进制和十六进制是计算机中常用的进制表示方法。
在计算机科学和信息技术领域,我们经常需要进行不同进制之间的转换。
下面是一个二进制、八进制和十六进制转换表,方便大家在实际应用中进行转换。
首先,我们来看二进制转换为八进制和十六进制的方法。
二进制是由0和1组成的数字系统,每一位的权值是2的幂次方。
八进制是由0到7组成的数字系统,每一位的权值是8的幂次方。
十六进制是由0到9和A到F组成的数字系统,每一位的权值是16的幂次方。
在二进制转换为八进制时,我们将二进制数从右往左每三位一组进行分组,然后将每组转换为对应的八进制数。
例如,二进制数1101011可以分组为011和010和110,分别对应的八进制数是3和2和6,所以1101011的八进制表示为326。
在二进制转换为十六进制时,我们将二进制数从右往左每四位一组进行分组,然后将每组转换为对应的十六进制数。
例如,二进制数1101011可以分组为0110和1011,分别对应的十六进制数是6和B,所以1101011的十六进制表示为6B。
接下来,我们来看八进制转换为二进制和十六进制的方法。
八进制数每一位的权值是8的幂次方,而二进制数每一位的权值是2的幂次方。
所以,八进制数可以直接转换为二进制数,每一位八进制数对应的三位二进制数。
例如,八进制数326可以转换为对应的二进制数011010110。
在八进制转换为十六进制时,我们先将八进制数转换为对应的二进制数,然后将二进制数从右往左每四位一组进行分组,最后将每组转换为对应的十六进制数。
例如,八进制数326转换为二进制数011010110,可以分组为0110和1011,分别对应的十六进制数是6和B,所以326的十六进制表示为6B。
最后,我们来看十六进制转换为二进制和八进制的方法。
十六进制数每一位的权值是16的幂次方,而二进制数每一位的权值是2的幂次方。
所以,十六进制数可以直接转换为二进制数,每一位十六进制数对应的四位二进制数。
10进制转16进制及8进制二进制乘法区位码和内码转换
10进制转16进制及8进制二进制乘法区位码和内码转换1.将十进制数除以16,得到商和余数。
2.将余数转换为对应的16进制数字。
0-9对应0-9,10对应A,11对应B,以此类推。
3.将商作为新的十进制数,重复步骤1和2,直到商为0为止。
4.将得到的16进制数字倒序排列,即为对应的16进制表示。
例如,将十进制数1234转换为16进制:1234÷16=77余2,2对应为277÷16=4余13,13对应为D。
4÷16=0余4,4对应为4所以,1234的16进制表示为4D21.将十进制数除以8,得到商和余数。
2.将余数转换为对应的8进制数字。
0-7对应0-73.将商作为新的十进制数,重复步骤1和2,直到商为0为止。
4.将得到的8进制数字倒序排列,即为对应的8进制表示。
二进制乘法算法:1.将两个二进制数的每一位相乘。
2.如果得到的乘积是0,该位结果为0;如果得到的乘积是1,该位结果为13.将结果按位相加,得到最终的乘法结果。
例如,计算二进制数1011和110的乘积:1011×110-------1101<-第一次相乘结果+10110<-第二次相乘结果--------------111001<-乘法结果区位码和内码转换:区位码和内码是汉字在计算机中的一种表示方式。
区位码用两个字节表示,高字节表示区,低字节表示位。
内码用一个字节表示。
区位码转换为内码:1.将区码的高字节减去160,得到高6位。
2.将区码的低字节减去160,得到低6位。
3.将高6位左移2位,然后与低6位相或,得到一个字节的内码。
内码转换为区位码:1.将内码的高6位右移2位,然后加上160,得到区码的高字节。
2.将内码的低6位加上160,得到区码的低字节。
例如,将区位码表示的汉字"中国"转换为内码:所以,"中国"的内码表示为D4。
2进制 , 8进制 , 10进制 , 16进制
2进制, 8进制, 10进制, 16进制,介绍及相互转换及快速转换的方法为什么要使用进制数数据在计算机中的表示,最终以二进制的形式存在,就是各种<黑客帝国>电影中那些0101010…的数字;我们操作计算机,实际就是使用程序和软件在计算机上各种读写数据,如果我们直接操作二进制的话,面对这么长的数进行思考或操作,没有人会喜欢。
C,C++语言没有提供在代码直接写二进制数的方法。
用16进制或8进制可以解决这个问题。
因为,进制越大,数的表达xx也就越短。
之所以使用16或8进制,而不其它的,诸如9或20进制.是因为2、8、16,分别是2的1次方、3次方、4次方。
这一点使得三种进制之间可以非常直接地互相转换;8进制或16进制既缩短了二进制数,还能保持了二进制数的表达特点。
转换还方便.进制的介绍进制:是计算机中数据的一种表示方法。
N进制的数可以用0~(N-1)的数表示,超过9的用字母A-F表示.10进制先说我们最熟悉的10进制,就是用0~9的数表示,逢10进1 .16进制如果是16进制,它就是由0-9,A-F组成,与10进制的对应关系是:0-9对应0-9;A-F对应10-15;字母不区分大小写。
2进制和8进制2进制由0-1组成8进制由0-7组成进制的转换公式二进制转换十进制八进制转换十进制十六进制转换十进制如何快速的进行2进制,10进制,16进制的相互转换先记住二进制的8421首先我们来看一个二进制数:1111,它是多少呢?你可能还要这样计算:1×2º+1×2¹+1×2²+1×2³=1×1+1×2+1×4+1×8=15。
我们必须直接记住1111每一位的权值,并且是从高位往低位记,:8、4、2、1。
即,最高位的权值为2³=8,然后依次是2²=4,2¹=2,2º=1。
2进制,8进制,16进制之间快速转换的技巧
2进制,8进制,16进制之间快速转换的技巧一)、数制计算机中采用的是二进制,因为二进制具有运算简单,易实现且可靠,为逻辑设计提供了有利的途径、节省设备等优点,为了便于描述,又常用八、十六进制作为二进制的缩写。
一般计数都采用进位计数,其特点是:(1)逢N进一,N是每种进位计数制表示一位数所需要的符号数目为基数。
(2)采用位置表示法,处在不同位置的数字所代表的值不同,而在固定位置上单位数字表示的值是确定的,这个固定位上的值称为权。
在计算机中:D7 D6 D5 D4 D3 D2 D1 D0 只有两种0和18 4 2 1二)、数制转换不同进位计数制之间的转换原则:不同进位计数制之间的转换是根据两个有理数如相等,则两数的整数和分数部分一定分别相等的原则进行的。
也就是说,若转换前两数相等,转换后仍必须相等。
有四进制十进制:有10个基数:0 ~~ 9 ,逢十进一二进制:有2 个基数:0 ~~ 1 ,逢二进一八进制:有8个基数:0 ~~ 7 ,逢八进一十六进制:有16个基数:0 ~~ 9,A,B,C,D,E,F (A=10,B=11,C=12,D=13,E=14,F=15) ,逢十六进一1、数的进位记数法N=a n-1*p n-1+a n-2*p n-2+…+a2*p2+a1*p1+a0*p02、十进制数与P进制数之间的转换①十进制转换成二进制:十进制整数转换成二进制整数通常采用除2取余法,小数部分乘2取整法。
例如,将(30)10转换成二进制数。
将(30)10转换成二进制数2| 30 ….0 ----最右位2 15 (1)2 7 (1)2 3 (1)1 ….1 ----最左位∴ (30)10=(11110)2将(30)10转换成八、十六进制数8| 30 ……6 ------最右位3 ------最左位∴ (30)10 =(36)816| 30 …14(E)----最右位1 ----最左位∴(30)10 =(1E)163、将P进制数转换为十进制数把一个二进制转换成十进制采用方法:把这个二进制的最后一位乘上20,倒数第二位乘上21,……,一直到最高位乘上2n,然后将各项乘积相加的结果就它的十进制表达式。
无符号2、8、10、16进制相互转换
⽆符号2、8、10、16进制相互转换计算机中数的表⽰⽅法--⼆进制1.⼆进制数的运算电⼦计算机⼀般采⽤⼆进制数。
⼆进制数只有0和1两个基本数字,容易在电⽓元件中实现。
⼆进制数的运算公式:0+0=0 0×0=00+1=1 0×1=01+0=1 1×0=01+1=10 1×1=12.⼗进制和⼆进制间的转换(1)⼗进制数转换成⼆进制将⼗进制整数转换成⼆进制整数时,只要将它⼀次⼀次地被2除,得到的余数从最后⼀个余数读起)就是⼆进制表⽰的数。
2)⼆进制数转换成⼗进制数将⼀个⼆进制数的整数转换成⼗进制数,只要将按权展开。
例:11011=1*24(2的4次⽅)+1*23(2的3次⽅)+0*22(2的2次⽅)+1*21(2的1次⽅)+1*20(2的0次⽅)=273.不同进制数的转换⼆进制数和⼋进制数互换:⼆进制数转换成⼋进制数时,只要从⼩数点位置开始,向左或向右每三位⼆进制划分为⼀组(不⾜三位时可补0),然后写出每⼀组⼆进制数所对应的⼋进制数码即可。
例:将⼆进制数(10110001.111)转换成⼋进制数:010 110 001. 1112 6 1 7即⼆进制数(10110001.111)转换成⼋进制数是(261.7)。
反过来,将每位⼋进制数分别⽤三位⼆进制数表⽰,就可完成⼋进制数和⼆进制数的转换。
⼆进制数和⼗六进制数互换:⼆进制数转换成⼗六进制数时,只要从⼩数点位置开始,向左或向右每四位⼆进制划分为⼀组(不⾜四位时可补0),然后写出每⼀组⼆进制数所对应的⼗六进制数码即可。
例:将⼆进制数(11011100110.1101)转换成⼗六进制数:0110 1110 0110. 11016 E 6 D即⼆进制数(11011100110.1101)转换成⼗六进制数是(6E6.D)。
反过来,将每位⼗六进制数分别⽤三位⼆进制数表⽰,就可完成⼗六进制数和⼆进制数的转换。
⼋进制数、⼗六进制数和⼗进制数的转换:这三者转换时,可把⼆进制数作为媒介,先把代转换的数转换成⼆进制数,然后将⼆进制数转换成要求转换的数制形式。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
同样是120,转换成16进制则为:
被除数
计算过程
商
余数
120
120/16
7
8
7
7/16
0
7
120转换为16进制,结果为:78。
请拿笔纸,采用(图:1)的形式,演算上面两个表的过程。
6.4 二、十六进制数互相转换
二进制和十六进制的互相转换比较重要。不过这二者的转换却不用计算,每个C,C++程序员都能做到看见二进制数,直接就能转换为十六进制数,反之亦然。
0010 — 2
同样,如果一个二进制数很长,我们需要将它转换成10进制数时,除了前面学过的方法是,我们还可以先将这个二进制转换成16进制,然后再转换为10进制。
下面举例一个int类型的二进制数:
01101101 11100101 10101111 00011011
我们按四位一组转换为16进制: 6D E5 AF 1B
听起来有些糊涂?我们结合例子来说明。比如要转换6为二进制数。
“把要转换的数,除以2,得到商和余数”。
那么:
要转换的数是6, 6 ÷ 2,得到商是3,余数是0。 (不要告诉我你不会计算6÷3!)
“将商继续除以2,直到商为0……”
现在商是3,还不是0,所以继续除以2。
那就: 3 ÷ 2, 得到商是1,余数是1。
来看一个例子,如何将十进制数120转换成八进制过程
商
余数
120
120/8
15
0
15
15/8
1
7
1
1/8
0
1
120转换为8进制,结果为:170。
非常非常开心,10进制数转换成16进制的方法,和转换为2进制的方法类似,惟一变化:除数由2变成16。
很完整的2、8、10、16进制转换方法
最近在研究C语言,因为要用到各进制间转换,所以收集了一些资料…
这是一节“前不着村后不着店”的课。不同进制之间的转换纯粹是数学上的计算。不过,你不必担心会有么复杂,无非是乘或除的计算。
生活中其实很多地方的计数方法都多少有点不同进制的影子。
比如我们最常用的10进制,其实起源于人有10个指头。如果我们的祖先始终没有摆脱手脚不分的境况,我想我们现在一定是在使用20进制。
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次方。
6.2.7 十六进制数在转义符中的使用
转义符也可以接一个16进制数来表示一个字符。如在6.2.4小节中说的 ‘?’ 字符,可以有以下表达方式:
‘?’ //直接输入字符
‘\77′ //用八进制,此时可以省略开头的0
‘\0×3F’ //用十六进制
同样,这一小节只用于了解。除了空字符用八进制数 ‘\0′ 表示以外,我们很少用后两种方法表示一个字符。
所以,FD转换为二进制数,为: 1111 1011
由于十六进制转换成二进制相当直接,所以,我们需要将一个十进制数转换成2进制数时,也可以先转换成16进制,然后再转换成2进制。
比如,十进制数 1234转换成二制数,如果要一直除以2,直接得到2进制数,需要计算较多次数。所以我们可以先除以16,得到16进制数:
6.3 十进制数转换到二、八、十六进制数
6.3.1 10进制数转换为2进制数
给你一个十进制,比如:6,如果将它转换成二进制数呢?
10进制数转换成二进制数,这是一个连续除2的过程:
把要转换的数,除以2,得到商和余数,
将商继续除以2,直到商为0。最后将所有余数倒序排列,得到数就是转换结果。
10997
直接计算就是:
5 * 16^0 + F * 16^1 + A * 16^2 + 2 * 16^3 = 10997
(别忘了,在上面的计算中,A表示10,而F表示15)
现在可以看出,所有进制换算成10进制,关键在于各自的权值不同。
假设有人问你,十进数 1234 为什么是 一千二百三十四?你尽可以给他这么一个算式:
比如 00000000 00000000 00000000 00000101 是 5的 原码。
反码:将二进制数按位取反,所得的新二进制数称为原二进制数的反码。
取反操作指:原为1,得0;原为0,得1。(1变0; 0变1)
比如:将00000000 00000000 00000000 00000101每一位取反,得11111111 11111111 11111111 11111010。
6.5 原码、反码、补码
结束了各种进制的转换,我们来谈谈另一个话题:原码、反码、补码。
我们已经知道计算机中,所有数据最终都是使用二进制数表达。
我们也已经学会如何将一个10进制数如何转换为二进制数。
不过,我们仍然没有学习一个负数如何用二进制表达。
比如,假设有一 int 类型的数,值为5,那么,我们知道它在计算机中表示为:
记住8421,对于任意一个4位的二进制数,我们都可以很快算出它对应的10进制值。
下面列出四位二进制数 xxxx 所有可能的值(中间略过部分)
仅4位的2进制数 快速计算方法 十进制值 十六进值
1111 = 8 + 4 + 2 + 1 = 15 F
至于二进制……没有袜子称为0只袜子,有一只袜子称为1只袜子,但若有两袜子,则我们常说的是:1双袜子。
生活中还有:七进制,比如星期。十六进制,比如小时或“一打”,六十进制,比如分钟或角度……
我们找到问号字符(?)的ASCII值是63,那么我们可以把它转换为八进值:77,然后用 ‘\77′来表示’?'。由于是八进制,所以本应写成 ‘\077′,但因为C,C++规定不允许使用斜杠加10进制数来表示字符,所以这里的0可以不写。
事实上我们很少在实际编程中非要用转义符加八进制数来表示一个字符,所以,6.2.4小节的内容,大家仅仅了解就行。
6.2.5 十六进制数转换成十进制数
2进制,用两个阿拉伯数字:0、1;
8进制,用八个阿拉伯数字:0、1、2、3、4、5、6、7;
10进制,用十个阿拉伯数字:0到9;
16进制,用十六个阿拉伯数字……等等,阿拉伯人或说是印度人,只发明了10个数字啊?
以下是一些用法示例:
int a = 0×100F;
int b = 0×70 + a;
至此,我们学完了所有进制:10进制,8进制,16进制数的表达方式。最后一点很重要,C/C++中,10进制数有正负之分,比如12表示正12,而-12表示负12,;但8进制和16进制只能用达无符号的正整数,如果你在代码中里:-078,或者写:-0xF2,C,C++并不把它当成一个负数。
被除数
计算过程
商
余数
1234
1234/16
77
2
77
77/16
4
13 (D)
4
4/16
0
4
结果16进制为: 0×4D2
然后我们可直接写出0×4D2的二进制形式: 0100 1011 0010。
其中对映关系为:
0100 — 4
1011 — D
假设有一个十六进数 2AF5, 那么如何换算成10进制呢?
用竖式计算:
2AF5换算成10进制:
第0位: 5 * 16^0 = 5
第1位: F * 16^1 = 240
第2位: A * 16^2 = 2560
第3位: 2 * 16^3 = 8192 +
————————————-
反过来,当我们看到 FD时,如何迅速将它转换为二进制数呢?
先转换F:
看到F,我们需知道它是15(可能你还不熟悉A~F这五个数),然后15如何用8421凑呢?应该是8 + 4 + 2 + 1,所以四位全为1 :1111。
接着转换 D:
看到D,知道它是13,13如何用8421凑呢?应该是:8 + 2 + 1,即:1011。
00000000 00000000 00000000 00000101
5转换成二制是101,不过int类型的数占用4字节(32位),所以前面填了一堆0。
现在想知道,-5在计算机中如何表示?
在计算机中,负数以其正值的补码形式表达。
什么叫补码呢?这得从原码,反码说起。
原码:一个整数,按照绝对值大小转换成的二进制数,称为原码。
0000 = 0 + 0 + 0 + 0 = 0 0
二进制数要转换为十六进制,就是以4位一段,分别转换为十六进制。
如(上行为二制数,下面为对应的十六进制):
1111 1101 , 1010 0101 , 1001 1011
F D , A 5 , 9 B
1110 = 8 + 4 + 2 + 0 = 14 E
1101 = 8 + 4 + 0 + 1 = 13 D
1100 = 8 + 4 + 0 + 0 = 12 C
1234 = 1 * 10^3 + 2 * 10^2 + 3 * 10^1 + 4 * 10^0