基数 | 数码 | 名称 | 描述 |
---|---|---|---|
2 | 0 和 1 | 二进制 | 逢二进一,几乎所有的电子计算机内部都使用二进位制,分别为“0”和“1”表示“关”和“开”。 |
8 | 0 - 7 | 八进制 | 逢八进一,偶尔用于计算机领域,2到3次幂。八位数字为“0-7”。 |
10 | 0 - 9 | 十进制 | 逢十进一,世界上最常见的算术运算位进制系统,十位数字为 “0-9” |
16 | 0-9 + A-F | 十六进制 | 逢十六进一,经常用于计算机领域。十六位数字为“0-9”,接着是“A-F”(小大写均可)。 |
对于进制的表示,编程语言基本上都提供了特殊前缀表示不同进制的数字。
为啥要区分表示呢?就比如说我写个数字111 要是我不告诉你他是什么进制的,你如何知道该数字真实表示的值呢?
不同的编程语言与编译器都会有自己的一套表示方式,在C#中数字的进制表示形式如下:
//合法的二进制 int a = 0b101; //换算成十进制为 5 int b = 0B; //换算成十进制为 33 Console.WriteLine(a); //5 Console.WriteLine(b); //33 //非法的二进制 int c = ; //无前缀 0B,相当于十进制 int d = 0B410; //4不是有效的二进制数字
//合法的八进制数 int a = 015; //换算成十进制为 13 //非法的八进制 int m = 256; //无前缀 0,相当于十进制 int n = 03A2; //A不是有效的八进制数字
十进制数字则没有特殊前缀,直接输入数字即可。
十六进制由数字 0~9、字母 A~F 或 a~f(不区分大小写)组成,使用时必须以0x或0X(不区分大小写)开头,例如:
//合法的十六进制 int a = 0X2A; //换算成十进制为 42 int b = -0XA0; //换算成十进制为 -160 int c = 0xffff; //换算成十进制为 65535 Console.WriteLine(a);// 42 Console.WriteLine(b);// -160 //非法的十六进制 int m = 5A; //没有前缀 0X,是一个无效数字 int n = 0X3H; //H不是有效的十六进制数字
该图是Windows系统中,自带的计算器,HEX表示16进制,DEC表示10进制,OCT表示8进制,BIN表示2进制,后续在编程的时候命名各类进制的变量有一定的参考意义
不管什么进制,都是一种计数形式,原理上都是相同的:x进制 就是 逢x进一。
由上可知(上述过程相当于“10进制转10进制”):
当我们是10进制的时候,那么底数为10 ,次方数 从0开始
个位数 就是 个位数字 乘以 10 的 0 次方,依次类推,然后将 各位数 计算的结果相加 就是最终结果
十进制转化为其他进制 主要是通过【连除法】
上面计算过程看不惯,也可用以下形式表示:
25➗2=12···················1
12➗2=6·····················0
6➗2=3·······················0
3➗2=1·······················1
1➗2=0·······················1
- 由于2的3次方=8,因此每3位二进制可以转换为1位八进制
- 由于2的4次方=16,因此每4位二进制可以转换为1位16进制
2进制与16进制 相互转换同理:
- 2 =>16 是每4位二进制一组,然后将4位计算的结果拼起来 就是 16进制的结果
- 16=>2 是将16进制的每个数字,分别进行2的连除,连除得到的结果,不足4位二进制的,前面用0补足,然后 拼起来即可
以上就是本文的内容,希望以上内容可以帮助到您,如文中有不对之处,还请批评指正。
参考文档:
C语言中的二进制、八进制和十六进制的表示
Python里的进制转换