十进制与二进制的转换

时间:2024-03-18 08:06:57

        在讲进制之间的转换之前,先引入几个概念:原码、反码、补码。在计算正数的时候原码=反码=补码,所以我认为只要在计算负数时反码和补码的概念才有真正的意义。计算机中二进制的计算均是用补码计算的,我们平时所说的二进制通常也是补码,需要注意二进制首位字符为符号位。以下是对这些概念的理解

原码:一个整数,转换成二进制数,称为原码;

如:①有一个整数,其数值为9,转换成二进制得到00001001,则其中原码为00001001;

  ②有一个整数,其数值为-9,转换成二进制得到10001001,则其中原码为10001001;

反码:将原码按位取反,得到的新的二进制数,称为反码;

如:①正数的反码等于原码,则数值9的反码为00001001。

  ②将10001001符号位不变,其他数值按位取反,得到新的二进制数11110110,即为其反码,则数值-9的反码为11110110

补码:反码加1,得到的二进制数,称为补码;

如:①正数的补码等于原码,则数值9的补码为00001001。

  ②二进制数值11110110加1,得到11110111,即为其补码,则数值-9的补码为11110110

一、十进制转二进制

    1、数值为正数时;

用该正数,递归除2,直到商等于0停止,倒序取余数,高位不足补0;

以十进制55为例:

    最终得到的二进制数为  11 0111 ,高位补0最终得到  0011 0111;

    2、数值为负数时;

以十进制-55为例:

  ① 取得该数值的绝对值为55,原码为0011 0111,则-55的原码 = -0011 0111 = 1011 0111

  ② 取 1011 0111 反码得到 1100 1000

  ③ 取 1100 1000 补码得到 1100 1001

则-55转换成的二进制数值为 1100 1001

二、二进制转十进制

       二进制数首位字符为符号位,0表示正,1表示负

    1、二进制数值首位为0

      二进制数值位数从后往前,依次计算第n位上数字乘以2的n-1次幂,所得到的和即为十进制数字;

      以 0011 0111 为例:

      1*2^0 + 1*2^1 + 1*2^2 + 0*2^3 + 1*2^4 + 1*2^5  =  1 + 2 + 4 + 16 + 32 = 55

      则最终的结果是55

     2、二进制数值首位为1

      二进制首位为1则表示次二进制数值为负数,根据十进制转二进制的规则逆推即可;

      以 1100 1001 为例:

        ① 1100 1001 减1 得到 1100 1000

        ② 取1100 1000 反码得到 1011 0111

        ③ 将1011 0111 转化成十进制为-55

      则最终得到结果为 -55