进制的介绍和转换

一、进制的由来

  其实在计算机中,任何数据的存在及存储的形式均是二进制表示。那么二进制又是是什么?

  二进制其实是由计算机的开关演变而来,因为在计算机中,用于表示的是电信号,高低电压,这无非就是一个开着或者关闭的开关。如下图:

  

  对于上面得到的一串0,1数字串,就是一组信号,即可表示为数据,就代表二进制数,因此上面的一串01,就是一个二进制数:10010110.

  对于上面的0和1,每一个0或者1表示一个位,而上面的8个0,1组成的就叫做一个字节。一个位(bit)就是一个二进制位。如下图表示:

   

  上面介绍了二进制的由来,那么八进制又是如何演变而来的呢?

  一个整数在计算机内存中表示也是一个二进制数据,但是如果一个数表示的二进制由一大串的0,1组成,那么这个数据表示起来就比较的麻烦因此就将三个二进制位分成一组,一个有8组值,因此叫八进制,如下:

   

  八种组合方式依次从000~111用数字0~7表示,那么这就是八进制数的由来。

  同理,当三个二进制位表示的数据的数据量还比较的庞大的话,就可以将四个二进制位表示为一个数,这时四个二进制位的组合方式一共有16中形式,因此这就是所谓的十六进制数。

二、进制的简单介绍

  对于数据的表示形式(也就是一种计数的方式),我们有常见的四种进制,分别是以下四种:

  1. 二进制:0,1组成,满二进一
  2. 八进制:0~7组成,满八进一,以0开头
  3. 十进制:0~9组成,满十进一
  4. 十六进制:0~9和ABCDEF组成,满十六进一 ,以0x开头

  其中十进制就是我们日常使用的表达方式。

三、进制的转换

  二进制,十进制,八进制,十六进制之间均可以相互的转换。

  a)  二进制转八进制

    将每三个二进制位组成一组,求出每组的值,而后将每组值拼接起来,就是我们要求的八进制。如下图所示:

    

  b)  二进制转十进制

   如下计算:

    1011(2) = 1 × 23 + 0 × 22 + 1 × 21 + 1 × 20  = 11(10)

  或者使用8421码进行判断,如下图:

   

  c)  二进制转十六进制

    和二进制转八进制同理,从右向左每四个二进制位分为一组,而后计算出每组的十进制值,而后用十六进制符号表示。位不足补0,如下图所示:

      

  d)  十六进制到八进制和十进制的转化

  1. 首先,将十六进制转换成二进制
  2. 而后根据得到的二进制直接转成十进制(十进制)
  3. 根据得到的二进制进行每三位二进制分组,求出相应的值,拼接的值就是八进制,如上

  e)  八进制到其他进制的转换

  1. 同样是将八进制先转成二进制
  2. 在根据二进制计算出对应进制的值
时间: 2024-10-24 04:49:33

进制的介绍和转换的相关文章

Java中byte与16进制字符串的互相转换

Java中byte用二进制表示占用8位,而我们知道16进制的每个字符需要用4位二进制位来表示(23 + 22 + 21 + 20 = 15),所以我们就可以把每个byte转换成两个相应的16进制字符,即把byte的高4位和低4位分别转换成相应的16进制字符H和L,并组合起来得到byte转换到16进制字符串的结果new String(H) + new String(L).即byte用十六进制表示只占2位. 同理,相反的转换也是将两个16进制字符转换成一个byte,原理同上. 根据以上原理,我们就可

Java中byte与16进制字符串的互相转换(转)

Java中byte用二进制表示占用8位,而我们知道16进制的每个字符需要用4位二进制位来表示(23 + 22 + 21 + 20 = 15),所以我们就可以把每个byte转换成两个相应的16进制字符,即把byte的高4位和低4位分别转换成相应的16进制字符H和L,并组合起来得到byte转换到16进制字符串的结果new String(H) + new String(L).即byte用十六进制表示只占2位. 同理,相反的转换也是将两个16进制字符转换成一个byte,原理同上. 根据以上原理,我们就可

各种进制的学习与转换

1.二进制 0 1 0101 运算法则 逢二进1 2.8进制 取值范围 0-7 015 07 3.10进制 0-9 4.16进制 0-9 A-F 二进制转10进制 0101   10,5, 8 4 2 1   3 2 1 0   0*2^3 + 1 * 2^2---=5 10进制转2进制 65   65/2 = 32 ------1     32/2 = 16 ------0     16/2 = 8 ----0     8/2 = 4 ----0     4/2 = 2   ----0    

用Python内置函数轻松实现各种进制数之间的转换

0.说明 9个月没有写过Python了,这9个月都在华为的ICT知识海洋里遨游,前段时间刚刚通过了HCIE的认证,想着还是喜欢Python和Linux多些,所以又回来了,后面会有越来越多的Python干货分享给大家,比如后面会打算写一个完整的Linux主机监控项目的教程给初入门的朋友,相信这会是非常不错的体验. 那段时间,曾经有些时候,我需要对各种进制进行转换,因为虽然那会不写Python了,但是还是用Python自带的解释器用来做简单的数学计算,很方便. 在网上找,看有没有方法可以实现各种进制

C#下16进制和BCD码转换代码

[csharp] view plain copy private static Byte[] ConvertFrom(string strTemp) { try { if (Convert.ToBoolean(strTemp.Length & 1))//数字的二进制码最后1位是1则为奇数 { strTemp = "0" + strTemp;//数位为奇数时前面补0 } Byte[] aryTemp = new Byte[strTemp.Length / 2]; for (int

进制与ASCII码转换

1 LabeledEdit4.Text := chr(65); // 用十进制方式赋值: ASCII码转换为字符 65 -> A 2 LabeledEdit4.Text := #65; // 用十进制方式赋值: ASCII码转换为字符 65 -> A 3 4 LabeledEdit4.Text := #$41; //用十六进制方式赋值: ASCII码转换为字符 41 -> A 5 LabeledEdit4.Text := chr($41); //用十六进制方式赋值: ASCII码转换为字

Python中的不同进制的语法和转换

不同进制的书写方式 八进制(Octal) 0o377 十六进制(Hex) 0xFF 二进制(Binary) 0b11111111 不同进制之间的转换 python提供了三个内置的函数,能够用来在不同进制间做转换. >>> oct(255), hex(255), bin(255) ('0o377', '0xff', '0b11111111') 还能够使用int函数,把字符串转成数值 >>> int('255'), int('0xFF', 16) (255, 255) 除此

【进制】二进制十进制转换练习

进制转换练习题22.8125 整数部分除2取余数,商继续除22/2 余 011/2 15/2 12/2 01倒叙串起来整数部分为 10110小数部分乘2 取整数部分,顺序和整数不一样 0.8125*2 = 1.625 10.625*2 = 1.25 10.25*2 = 0.5 00.5*2 = 1 1结束 正序串起来 1101 10110.1101 十进制转二进制 整数部分 倒序 10110 0*2^0+1*2^1+1*2^2+0*2^3+1*2^4 2+4+16 =22 小数部分正序负数幂11

通过Integer类实现二进制和16进制之间的互相转换,8进制同理

public static String bin2Hex(String binStr) { int deci = Integer.valueOf(binStr,2); return Integer.toHexString(deci); } public static String hex2Bin(String hexStr) { int deci = Integer.valueOf(hexStr,16); return Integer.toBinaryString(deci); } public