进制是什么

点赞 0
收藏 0
创建时间 2020-02-09
章节介绍:

§ 什么是进制

可能很多人不知道什么是进制,我摘取了百度百科上的解释:

进制也就是进位计数制,是人为定义的带进位的计数方法(有不带进位的计数方法,比如原始的结绳计数法,唱票时常用的“正”字计数法,以及类似的tally mark计数)。 对于任何一种进制—X进制,就表示每一位置上的数运算时都是逢X进一位。 十进制是逢十进一,十六进制是逢十六进一,二进制就是逢二进一,以此类推,x进制就是逢x进位

§ 进制的分类

我们以后编码过程中也会碰到进制,我们重点掌握4中就行了:二进制 八进制 十进制 十六进制

  1. 二进制:原则:逢二进一
  2. 八进制:原则:逢八进一
  3. 十进制:原则:逢十进一,十进制是我们生活中使用的,比较好理解
  4. 十六进制:原则:逢十六进一

§ java中的进制表示

四种进制从1-20的表示方式(标题数字采用十进制)


十进制 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
二进制 1 10 11 100 101 110 111 1000 1001 1010 1011 1100 1101 1110 1111 10000 10001 10010 10011 10100
八进制 1 2 3 4 5 6 7 10 11 12 13 14 15 16 17 20 21 22 23 24
十六进制 1 2 3 4 5 6 7 8 9 a b c d e f 10 11 12 13 14

从上面的表格我们可以看出二进制中不会出现2,因为逢二进1了。八进制中不会出现八,因为逢八进一了。

这里要特别注意,十六进制中从10-15使用a b c d e f 来表示,这是为了和十进制的数字区别开。

§ 进制的转换

进制的转换我们以后做java编程基本是使用不到了,所以这部分内容可以作为扩展。

§ 转换分类

4中进制从易到难我们可以分为:十进制转其他进制,二进制转其他进制,八进制转其他进制,十六进制转其他进制。

§ 转换运算

  1. 十进制转其他进制


    • 十进制转二进制 **将十进制123转换为二进制


      解题方法:除2取余,逆序排列

      具体做法是:用2整除十进制整数,可以得到一个商和余数;再用2去除商,又会得到一个商和余数,如此进行,直到商为0时为止,然后把先得到的余数作为二进制数的低位有效位,后得到的余数作为二进制数的高位有效位,依次排列起来

      那么十进制123转换为二进制最终为:1111011 ,这是口语的念法不要念成 一百一十一万一千零一十一,而只能念一 一 一 一零一 一。

    • 十进制转八进制 **将十进制123转换为八进制


      你学会了十进制转二进制,那么转八进制也是一样的,使用 除8取余,逆序排列

      结果我们可以看出十进制123转为八进制为:173,同样不要念成一百七十三,而只能念数字一七三。

    • 十进制转十六进制 **将十进制123转换为十六进制


      同理使用 ***除16取余,逆序排列

      结果为:7b,这里我们注意十六进制中没有11,而是使用字母b来代替。

  2. 二进制转其他进制


    • 二进制转十进制 将二进制1111011转换为十进制


      原理:求取每一位二进制对应的十进制大小,然后相加得到十进制,注意如果当前位是0则不参加计算

      我们使用表格来描述,标题列为二进制数字

      二进制 1 1 1 1 0 1 1
      每位对应的10进制大小 64 32 16 8 0 2 1

      我们将对应的十进制数字相加:64+32+16+8+0+2+1 = 123 。

      ***规律:***有一个规律我们要注意:从右向左是乘2倍的增长

    • 二进制转八进制 将二进制1111011转换为八进制


      **原理:这个比较好转,我们采用三位一分方法:从右向左按三位一组分开,高位(左边)不够三位的补0。

      二进制: 1111011
      分组后: 001   111   011 
      每一组对应的八进制数字:  1   7  3 
      最后的八进制数字就是:173 
      
    • 二进制转十六进制 将二进制1111011转换为十六进制

      原理: 转十六进制和八进制一样只不过我们要按四位一分, 从右向左按四位一组分开,高位(左边)不够三位的补0。

      二进制: 1111011
      分组后: 0111   1011 
      每一组对应的八进制数字:  7    b
      最后的十六进制数字就是:7b
      
  3. 八进制转其他进制


    原理: 八进制转其他进制不好转,因此我们可以通过先转二进制,在转其他进制方法

    • 八进制十进制 将八进制173转为二进制


      **原理:**将八进制每一位对应的三位二进制写出来,不够三位高位(左边)补0。然后拼接就是二进制了。

      八进制; 173
      每一位对应的二进制:001  111  011
      最后的二进制:1111011
      
    • 八进制转十进制 将八进制173转为十进制


      原理 将八进制先转为二进制再转为十进制:

      八进制; 						173
      每一位对应的二进制:			001  111  011
      对应的二进制:					1	1	1	1	0	1	1
      每一位二进制对应的十进制数字:	  64  32  16   8   0   2   1
      相加得到的十进制数字:			123
      
    • 八进制转十六进制 将八进制173转为十六进制


      原理 我们同样先转为二进制,因为二进制对十六进制十四位一分 因此我们只需要将二进制重新分组计算就可以了

      八进制:			173
      每一位对应的二进制:	001  111  011
      对应的二进制:		  1111011 
      重新4位一分:		   0111	1011
      对应的十六进制:	  7		b
      
  4. 十六进制转其他进制


    十六进制转其他进制和八进制转其他进制雷同。

    • 十六进制转二进制 将十六进制7b转为二进制


      十六进制:			7b
      每一位对应的二进制:	0111	1011
      对应的二进制:		  1111011  
      
    • 十六进制转十进制 将十六进制7b转为十进制


      原理: 十六进制同样是先转二进制再转十进制

      十六进制:			7b
      每一位对应的二进制:	0111	1011
      对应的二进制:		  1111011  
      每一位的十进制数字:  64  32  16   8   0   2   1
      相加得到的十进制数字:	123
      
    • 十六进制转八进制 将十六进制7b转为八进制


      十六进制:			7b
      每一位对应的二进制:	0111	1011
      对应的二进制:		  1111011  
      重新三位一分:    001   111   011
      对应的八进制:	1  7   3
      

§ java代码中的进制表示方式

有时候我们在写代码的时候需要标明该数字是哪个进制,我们需要如下标明:

public class Hello{ //Hello要和文件名一致,否则运行会报错
	public static void main(String args[]){
    	//java不支持二进制的标识,因此你没有办法在java中直接写二进制数字。
		//不标识默认为十进制,打印结果:123
		System.out.println(123); 
		/**
			八进制使用0标识,注意前面那个0就标识是八进制,所以是八进制的一七三,
			而不是一百七十三。打印结果:123
		**/
		System.out.println(0173); 
		//十六进制使用0x标识,这里表示十六进制的7b,打印结果:123
		System.out.println(0x7b); 
	} 
}

注意:


  • java不支持二进制的标识,因此你没有办法在java中直接写二进制数字。
  • 控制台打印的都是十进制数字,所以都是123