001关于进制与相互之间的转换
一 、进制概述

二、进制详解
二进制:
逢2进1
一、正整数的十进制转换二进制: 要点:除二取余,倒序排列 解释:将一个十进制数除以二,得到的商再除以二,依此类推直到商等于一或零时为止,倒取将除得的余数,即换算为二进制数的结果 例如把52换算成二进制数,计算结果如图:
二、负整数转换为二进制 要点:(正数除二取余,倒序排列)取反加一 解释:将该负整数对应的正整数先转换成二进制,然后对其“取反”,再对取反后的结果加1即可 例如要把-52换算成二进制: 1.先取得52的二进制:00110100 2.对所得到的二进制数取反:11001011 3.将取反后的数值加一即可:11001100
三、小数转换为二进制 要点:(小数)乘二取整,正序排列 解释:对被转换的小数乘以2,取其整数部分(0或1)作为二进制小数部分,取其小数部分,再乘以2,又取其整数部分作为二进制小数部分,然后取小数部分,再乘以2,直到小数部分为0或者已经去到了足够位数。每次取的整数部分,按先后次序排列,就构成了二进制小数的序列 0.2乘以2,取整后小数部分再乘以2,运算4次后得到的整数部分依次为0、0、1、1,结果又变成了0.2, 若果0.2再乘以2后会循环刚开始的4次运算,所以0.2转换二进制后将是0011的循环,即: (0.2)10=(0.0011 0011 0011 .....)2 循环的书写方法为在循环序列的第一位和最后一位分别加一个点标注
四、二进制整数转换为十进制:
1. 正整数转换,2进制110,转换成10进制就是6 (110)2= 1*(2^2) + 1*(2^1) + 0*(2^0) = 4+2+0 = (6)10
2. 有符号的二进制转换成十进制 如果二进制数补足位数之后首位为1,那么其对应的整数为负,那么需要先取反然后再换算 比如11111001,首位为1,那么需要先对其取反,即:-00000110 00000110,对应的十进制为6,因此11111001对应的十进制即为-6 换算公式可表示为: 11111001=-00000110 = -6
3. 如果将二进制0.110转换为十进制:

八进制
逢8进一

十进制
逢10进一
十六进制
逢16进一


十进制转八进制、十六进制

八进制、十六进制转10进制

十六进制与八进制之间的转换
八进制与十六进制之间的转换有两种方法
第一种:他们之间的转换可以先转成二进制然后再相互转换。
第二种:他们之间的转换可以先转成十进制然后再相互转换。
这里就不再进行图片用法解释。
如果通过代码编写,很简单,总结如下:
十进制转换为二进制(int-->string)
System.Convert.ToString(d, 2);// d为int类型 以4为例,输出为100
十六进制转换为二进制(int-->string)
System.Convert.ToString(d, 2);// d为int类型 以0X14为例,输出为10100
上面ToString函数的第二个参数表示目标数字系统的基数。
二进制转换为十进制(string-->int)
System.Convert.ToInt32(s, 2);// d为string类型 以“1010”为例,输出为10
十六进制转换为十进制(string-->int、int-->int)
方法一:
System.Convert.ToString(0xa,10);// 以0XA为例,输出为10
或者
System.Convert.ToInt32("0x41", 16);//以"0x41"为例,输出为65
方法二:
System.Int32.Parse(s, System.Globalization.NumberStyles.HexNumber);//s为string类型,以“41”为例,输出为65
注意这里的s中不能带有“0X”或者“0x”,区别于上面的方法。
二进制转换为十六进制(string-->int)
先转换为十进制,在转换为十六进制
string.Format("{0:X}",System.Convert.ToInt32(s, 2));// s为string类型 以“1010”为例,输出为A
十进制转换为十六进制
十进制转换为十六进制不需要特殊的方法,只要对输出格式进行控制一下就可以。
或者使用string.Format("{0:x}", dec)方法进行控制,也可以用s.ToString("X")方式进行控制。
除了数制转换之外,数据类型的转换也比较重要。对于基本数据类型,byte、char、int、string以及它们的数组形式的转换虽然简单,但是比较基础的知识。网上也有很多详解,用到的时候自行查阅即可。



浙公网安备 33010602011771号