我不是专业学计算机的,这方面了解的不多,之前也没有遇到过这方面的问题,最近看C#的时候发现有这方面的问题,记录下对这个转换的理解。
所谓的进制,就是逢几进一的问题,生活中我们使用的是十进制,就是逢十进一。剩下的就不用多说了,下面开始一个一个来。
(1):十进制转二进制:
79 / 2 = 39 余 1 39 / 2 = 19 余 1 19 / 2 = 9 余 1 9 / 2 = 4 余 1 4 / 2 = 2 余0 2 / 2 = 1 余 0 1 / 2 = 0 余 1 所以79 的二进制数是 1001111
二进制转十进制
1 * 2^6 + 0 * 2^5 + 0 * 2^4 + 1 * 2^3 + 1 * 2^2 + 1 * 2^1 + 1 * 2^0 = 79
(2):十进制转八进制
321 / 8 = 40 余 1 40 / 8 = 5 余 0 5 / 8 = 0 余 5 所以321 的八进制数是 501
八进制转十进制
5 * 8^2 + 0 * 8^1 + 1 * 8^0 = 321
(3):十进制转16进制
十六进制数:0/1/2/3/4/5/6/7/8/9/A/B/C/D/E/F
987 / 16 = 61 余 11(11在十六进制中使用B表示) 61 / 16 = 3 余 13(13在十六进制中使用D表示) 3 / 16 = 0 余 3 所以987 的八进制数是3DB
十六进制转十进制
3 * 16^2 + 13 * 16 ^1 + 11 * 16^0 = 987
(4):八进制转二进制
八进制数通过除2取余法,得到二进制数,对每个八进制为3个二进制,不足时在最左边补零。
501
1 / 2 = 0 余1 0 0 1 0 / 2 = 0 0 0 0 5 / 2 = 2 余 1 2 / 2 = 1 余 0 1 / 2 = 0 余 1 101 所以八进制501的二进制数为 101000001
二进制转八进制
从右到左,每三位一组。
0 * 2^2 + 0 * 2^1 + 1 * 2^0 = 1 0 * 2^2 + 0 * 2^1 + 0 * 2^0 = 0 1 * 2^2 + 0 * 2^1 + 1 * 2^0 = 5 所以 101000001的二进制数为501
(5):十六换二进制
十六进制数通过除2取余法,得到二进制数,对每个十六进制为4个二进制,不足时在最左边补零。
3DB
11 / 2 = 5 余1 5 / 2 = 2 余 1 2 / 2 = 1 余0 1 / 2 = 余1 1011 13 / 2 = 6 余 1 6 / 2 = 3 余 0 3 / 2 = 1 余 1 1 / 2 = 0 余 1 1101 3 / 2 = 1 余1 1 / 2 = 0 余1 0011 所以3DB的二进制数为1111011011
二进制转换十六进制
这个和二进制转换八进制是一样的,从右到左,每四位一组。
001111011011
0 * 2^3+ 0 * 2^2+ 1 * 2^1+ 1 * 2^0 = 3 1 * 2^3 + 1 * 2^2 + 0 * 2^1 + 1 * 2^0 = 13(D) 1 * 2^3 + 0 *2^2 + 1* 2^1 + 1 * 2^0 = 13(B) 所以1111011011的十六进制数为3DB
(6):八进制转换成十六进制
这个好像是不能直接做转换的,可以先把其中一个先转换成10进制,在转换成另外一个。
或者先转换成二进制也可以。请参考上边。
上边我看了一下各个进制间的转换。下边我尝试了一下在C#中使用代码对各个进制中的数字进行转换。
上代码:我这里使用的是控制台应用
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace gc { class Program { /* C#主要的运行函数,就是main函数 */ static void Main(string[] args) { // 注意不能使用单引号,报错。 // 二进制,八进制,十六进制数转换为十进制。 Console.WriteLine(Convert.ToInt32("110011",2)); // 51 Console.WriteLine(Convert.ToInt32("226", 8)); // 150 Console.WriteLine(Convert.ToInt32("6F", 16)); // 111 // 数字进制转换,两个参数,第一个:要转换的数字,第二个:是几进制的数字 // 十进制转换为二进制,八进制,十六进制数。 //Console.WriteLine(Convert.ToString(89, 2)); // 1011001 //Console.WriteLine(Convert.ToString(89, 8)); //131 //Console.WriteLine(Convert.ToString(89, 16));// 59 Console.ReadKey(); } } }