精华内容
下载资源
问答
  • 基于循环差集的二进制
  • 进制转换:二进制、八进制、十六进制、十进制之间转换 不同进制之间转换在编程中经常会用到,尤其是C语言。 将二进制、八进制、十六进制转换为十进制 二进制、八进制和十六进制向十进制转换都非常容易,就是...

    进制转换:二进制、八进制、十六进制、十进制之间的转换

    不同进制之间的转换在编程中经常会用到,尤其是C语言。

    将二进制、八进制、十六进制转换为十进制

    二进制、八进制和十六进制向十进制转换都非常容易,就是“按权相加”。所谓“权”,也即“位权”。

    假设当前数字是N进制,那么:

    对于整数部分,从右往左看,第i位的位权等于Ni-1

    对于小数部分,恰好相反,要从左往右看,第j位的位权为N-j

    更加通俗的理解是,假设一个多位数(由多个数字组成的数)某位上的数字是1,那么它所表示的数值大小就是该位的位权。

    1) 整数部分

    例如,将八进制数字53627转换成十进制:

    53627 = 5×84 + 3×83 + 6×82 + 2×81 + 7×80 = 22423(十进制)

    从右往左看,第1位的位权为 80=1,第2位的位权为 81=8,第3位的位权为 82=64,第4位的位权为 83=512,第5位的位权为 84=4096 …… n位的位权就为 8n-1。将各个位的数字乘以位权,然后再相加,就得到了十进制形式。

    注意,这里我们需要以十进制形式来表示位权。

    再如,将十六进制数字9FA8C转换成十进制:

    9FA8C = 9×164 + 15×163 + 10×162 + 8×161 + 12×160 = 653964(十进制)

    从右往左看,第1位的位权为160=1,第2位的位权为 161=16,第3位的位权为 162=256,第4位的位权为 163=4096,第5位的位权为 164=65536 …… n位的位权就为16n-1。将各个位的数字乘以位权,然后再相加,就得到了十进制形式。

    将二进制数字转换成十进制也是类似的道理:

    11010 = 1×24 + 1×23 + 0×22 + 1×21 + 0×20 = 26(十进制)

    从右往左看,第1位的位权为20=1,第2位的位权为21=2,第3位的位权为22=4,第4位的位权为23=8,第5位的位权为24=16 …… n位的位权就为2n-1。将各个位的数字乘以位权,然后再相加,就得到了十进制形式。

    2) 小数部分

    例如,将八进制数字423.5176转换成十进制:

    423.5176 = 4×82 + 2×81 + 3×80 + 5×8-1 + 1×8-2 + 7×8-3 + 6×8-4 = 275.65576171875(十进制)

    小数部分和整数部分相反,要从左往右看,第1位的位权为 8-1=1/8,第2位的位权为 8-2=1/64,第3位的位权为 8-3=1/512,第4位的位权为 8-4=1/4096 …… m位的位权就为 8-m

    再如,将二进制数字 1010.1101 转换成十进制:

    1010.1101 = 1×23 + 0×22 + 1×21 + 0×20 + 1×2-1 + 1×2-2 + 0×2-3 + 1×2-4 = 10.8125(十进制)

    小数部分和整数部分相反,要从左往右看,第1位的位权为 2-1=1/2,第2位的位权为 2-2=1/4,第3位的位权为 2-3=1/8,第4位的位权为 2-4=1/16 …… m位的位权就为 2-m

    更多转换成十进制的例子:

    二进制:1001 = 1×23 + 0×22 + 0×21 + 1×20 = 8 + 0 + 0 + 1 = 9(十进制)

    二进制:101.1001 = 1×22 + 0×21 + 1×20 + 1×2-1 + 0×2-2 + 0×2-3 + 1×2-4 = 4 + 0 + 1 + 0.5 + 0 + 0 + 0.0625 = 5.5625(十进制)

    八进制:302 = 3×82 + 0×81 + 2×80 = 192 + 0 + 2 = 194(十进制)

    八进制:302.46 = 3×82 + 0×81 + 2×80 + 4×8-1 + 6×8-2 = 192 + 0 + 2 + 0.5 + 0.09375= 194.59375(十进制)

    十六进制:EA7 = 14×162 + 10×161 + 7×160 = 3751(十进制)

    将十进制转换为二进制、八进制、十六进制

    将十进制转换为其它进制时比较复杂,整数部分和小数部分的算法不一样,下面我们分别讲解。

    1) 整数部分

    十进制整数转换为N进制整数采用“N取余,逆序排列”法。具体做法是:

    N作为除数,用十进制整数除以N,可以得到一个商和余数;

    保留余数,用商继续除以N,又得到一个新的商和余数;

    仍然保留余数,用商继续除以N,还会得到一个新的商和余数;

    ……

    如此反复进行,每次都保留余数,用商接着除以N,直到商为0时为止。

    把先得到的余数作为N进制数的低位数字,后得到的余数作为N进制数的高位数字,依次排列起来,就得到了N进制数字。

    下图演示了将十进制数字36926转换成八进制的过程:

    http://c.biancheng.net/cpp/uploads/allimg/170915/1-1F9151J30K46.png

    从图中得知,十进制数字36926转换成八进制的结果为110076

    下图演示了将十进制数字42转换成二进制的过程:

    http://c.biancheng.net/cpp/uploads/allimg/170915/1-1F9151K641Z0.png

    从图中得知,十进制数字42转换成二进制的结果为101010

    2) 小数部分

    十进制小数转换成N进制小数采用“N取整,顺序排列”法。具体做法是:

    N乘以十进制小数,可以得到一个积,这个积包含了整数部分和小数部分;

    将积的整数部分取出,再用N乘以余下的小数部分,又得到一个新的积;

    再将积的整数部分取出,继续用N乘以余下的小数部分;

    ……

    如此反复进行,每次都取出整数部分,用N接着乘以小数部分,直到积中的小数部分为0,或者达到所要求的精度为止。

    把取出的整数部分按顺序排列起来,先取出的整数作为N进制小数的高位数字,后取出的整数作为低位数字,这样就得到了N进制小数。

    下图演示了将十进制小数0.930908203125转换成八进制小数的过程:

    http://c.biancheng.net/cpp/uploads/allimg/170918/1-1F91Q20520335.png

    从图中得知,十进制小数0.930908203125转换成八进制小数的结果为0.7345

    下图演示了将十进制小数0.6875 转换成二进制小数的过程:

    http://c.biancheng.net/cpp/uploads/allimg/170918/1-1F91QHI2I2.png

    从图中得知,十进制小数 0.6875 转换成二进制小数的结果为 0.1011

    如果一个数字既包含了整数部分又包含了小数部分,那么将整数部分和小数部分开,分别按照上面的方法完成转换,然后再合并在一起即可。例如:

    十进制数字 36926.930908203125 转换成八进制的结果为 110076.7345

    十进制数字 42.6875 转换成二进制的结果为 101010.1011

    下表列出了前17个十进制整数与二进制、八进制、十六进制的对应关系:

    十进制

    0

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15

    16

    二进制

    0

    1

    10

    11

    100

    101

    110

    111

    1000

    1001

    1010

    1011

    1100

    1101

    1110

    1111

    10000

    八进制

    0

    1

    2

    3

    4

    5

    6

    7

    10

    11

    12

    13

    14

    15

    16

    17

    20

    十六进制

    0

    1

    2

    3

    4

    5

    6

    7

    8

    9

    A

    B

    C

    D

    E

    F

    10

    注意,十进制小数转换成其他进制小数时,结果有可能是一个无限位的小数。请看下面的例子:

    十进制0.51对应的二进制为0.100000101000111101011100001010001111010111...,是一个循环小数;

    十进制0.72对应的二进制为0.1011100001010001111010111000010100011110...,是一个循环小数;

    十进制0.625对应的二进制为0.101,是一个有限小数。

    二进制和八进制、十六进制的转换

    其实,任何进制之间的转换都可以使用上面讲到的方法,只不过有时比较麻烦,所以一般针对不同的进制采取不同的方法。将二进制转换为八进制和十六进制时就有非常简洁的方法,反之亦然。

    1) 二进制整数和八进制整数之间的转换

    二进制整数转换为八进制整数时,每三位二进制数字转换为一位八进制数字,运算的顺序是从低位向高位依次进行,高位不足三位用零补齐。下图演示了如何将二进制整数 1110111100 转换为八进制:

    http://c.biancheng.net/cpp/uploads/allimg/170919/1-1F919102I0949.png

    从图中可以看出,二进制整数 1110111100 转换为八进制的结果为 1674

    八进制整数转换为二进制整数时,思路是相反的,每一位八进制数字转换为三位二进制数字,运算的顺序也是从低位向高位依次进行。下图演示了如何将八进制整数 2743 转换为二进制:

    http://c.biancheng.net/cpp/uploads/allimg/170919/1-1F919103A2R7.png

    从图中可以看出,八进制整数 2743 转换为二进制的结果为 10111100011

    2) 二进制整数和十六进制整数之间的转换

    二进制整数转换为十六进制整数时,每四位二进制数字转换为一位十六进制数字,运算的顺序是从低位向高位依次进行,高位不足四位用零补齐。下图演示了如何将二进制整数 10 1101 0101 1100 转换为十六进制:

    http://c.biancheng.net/cpp/uploads/allimg/170919/1-1F919104H9539.png

    从图中可以看出,二进制整数 10 1101 0101 1100 转换为十六进制的结果为 2D5C

    十六进制整数转换为二进制整数时,思路是相反的,每一位十六进制数字转换为四位二进制数字,运算的顺序也是从低位向高位依次进行。下图演示了如何将十六进制整数 A5D6 转换为二进制:

    http://c.biancheng.net/cpp/uploads/allimg/170919/1-1F91910553H50.png

    从图中可以看出,十六进制整数 A5D6 转换为二进制的结果为 1010 0101 1101 0110

    C语言编程中,二进制、八进制、十六进制之间几乎不会涉及小数的转换,所以这里我们只讲整数的转换,大家学以致用足以。另外,八进制和十六进制之间也极少直接转换,这里我们也不再讲解了。

    展开全文
  • 学习计算机语言,难免遇到进制的转换,今天就先来看看十进制、二进制进制的互相转换。接下来以二进制、十进制的互相转换说明进制的转换技巧。 1.十进制转二进制--短除法 ...即将二进制每位上的数乘以,然后相...

    学习计算机语言,难免遇到进制的转换,今天就先来看看十进制、二进制进制的互相转换。接下来以二进制、十进制的互相转换说明进制的转换技巧。

    1.十进制转二进制--短除法

    如:27

    27除以2商13余1

    再将13除以2商6余1

    如此一直除下去,直到商为0

    然后从最下往上就可以得到27的二进制数: 11011

    2.二进制转十进制--权相加法

    即将二进制每位上的数乘以权,然后相加之和即是十进制数,我们来看看11011怎么恢复成十进制,先看看表格

    1

    1

    0

    1

    1

     

     

     

    所以就计算式为

    即16+8+0+2+1 = 27 

    第一个2的几次方就是二进制位数-1,11011一共有5位,所以第一个为2的4次方

    3.二进制转十进制 -- 简单 8421 法

    这种方法比较便捷,但要掌握排列技巧 如10110:

    16 8 4 2 1

    1

    0

    1

    1

    0

     

     

     

     

    10110的十进制就是16+4+2 = 22

    再比如 1001100

    64 32 16 8 4 2 1

    1

    0

    0

    1

    1

    0

    0

     

     

     

     

    1001100的十进制就是64+8+4 = 76

    好了,就写这么多了,大家还有什么好的方法。欢迎在这里探讨。

    编程技术交流QQ群
    编程技术叫流QQ群
    展开全文
  • 一、二进制数转换成十进制数由二进制数转换成十进制数基本做法是,把二进制数首先写成加权系数展开式,然后按十进制加法规则求和。这种做法称为"按相加"法。例如把二进制数 110.11 转换成十进制数。二、十进制数...

    一、二进制数转换成十进制数

    由二进制数转换成十进制数的基本做法是,把二进制数首先写成加权系数展开式,然后按十进制加法规则求和。这种做法称为"按权相加"法。

    例如把二进制数 110.11 转换成十进制数。

    df3302a44cfcf0521614065dd82e926b.png

    二、十进制数转换为二进制数

    十进制数转换为二进制数时,由于整数和小数的转换方法不同,所以先将十进制数的整数部分和小数部分分别转换后,再加以合并。

    1. 十进制整数转换为二进制整数

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

    例如把 (173)10 转换为二进制数。

    f79e0914cb08765e7c7b356c3cfdbd62.png

    2.十进制小数转换为二进制小数

    十进制小数转换成二进制小数采用"乘2取整,顺序排列"法。具体做法是:用2乘十进制小数,可以得到积,将积的整数部分取出,再用2乘余下的小数 部分,又得到一个积,再将积的整数部分取出,如此进行,直到积中的小数部分为零,或者达到所要求的精度为止。

    然后把取出的整数部分按顺序排列起来,先取的整数作为二进制小数的高位有效位,后取的整数作为低位有效位。

    例如把(0.8125)转换为二进制小数。

    5d647bfe8efbd52fa19c2f82e02518bb.png


    例:

    (173.8125)10=( )2

    解:

    在上个例子中得(173)10=(10101101)2得(0.8125)10=(0.1101)2

    把整数部分和小数部分合并得:

    (173.8125)10=(10101101.1101)2

    十进制小数转换成二进制小数采用"乘2取整,顺序排列"法。具体做法是:用2乘十进制小数,可以得到积,将积的整数部分取出,再用2乘余下的小数部分,又 得到一个积,再将积的整数部分取出,如此进行,直到积中的整数部分为零,或者整数部分为1,此时0或1为二进制的最后一位。或者达到所要求的精度为止。

    然后把取出的整数部分按顺序排列起来,先取的整数作为二进制小数的高位有效位,后取的整数作为低位有效位。 

    十进制小数转二进制

    如:0.625=(0.101)B

    0.625*2=1.25======取出整数部分1 0.25*2=0.5========取出整数部分0 0.5*2=1==========取出整数部分1 

    再如:0.7=(0.1 0110 0110...)B

    0.7*2=1.4========取出整数部分1 0.4*2=0.8========取出整数部分0 0.8*2=1.6========取出整数部分1 0.6*2=1.2========取出整数部分1 0.2*2=0.4========取出整数部分0  0.4*2=0.8========取出整数部分0 0.8*2=1.6========取出整数部分1 0.6*2=1.2========取出整数部分1 0.2*2=0.4========取出整数部分0
    展开全文
  • 一、二进制数转换成十进制数由二进制数转换成十进制数基本做法是,把二进制数首先写成加权系数展开式,然后按十进制加法规则求和。这种做法称为"按相加"法。例如把二进制数 110.11 转换成十进制数。二、十进制数...

    一、二进制数转换成十进制数

    由二进制数转换成十进制数的基本做法是,把二进制数首先写成加权系数展开式,然后按十进制加法规则求和。这种做法称为"按权相加"法。

    例如把二进制数 110.11 转换成十进制数。

    ad197f9f4c8fd8d0bbaa1affa24b2b2c.png

    二、十进制数转换为二进制数

    十进制数转换为二进制数时,由于整数和小数的转换方法不同,所以先将十进制数的整数部分和小数部分分别转换后,再加以合并。

    1. 十进制整数转换为二进制整数

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

    例如把 (173)10 转换为二进制数。

    ad8cd8eecd325f877b7989bc4ba54979.png

    2.十进制小数转换为二进制小数

    十进制小数转换成二进制小数采用"乘2取整,顺序排列"法。具体做法是:用2乘十进制小数,可以得到积,将积的整数部分取出,再用2乘余下的小数 部分,又得到一个积,再将积的整数部分取出,如此进行,直到积中的小数部分为零,或者达到所要求的精度为止。

    然后把取出的整数部分按顺序排列起来,先取的整数作为二进制小数的高位有效位,后取的整数作为低位有效位。

    例如把(0.8125)转换为二进制小数。

    a9f39db74d60af6ced212d29c238a5c6.png


    例:

    (173.8125)10=( )2

    解:

    在上个例子中得(173)10=(10101101)2得(0.8125)10=(0.1101)2

    把整数部分和小数部分合并得:

    (173.8125)10=(10101101.1101)2

    十进制小数转换成二进制小数采用"乘2取整,顺序排列"法。具体做法是:用2乘十进制小数,可以得到积,将积的整数部分取出,再用2乘余下的小数部分,又 得到一个积,再将积的整数部分取出,如此进行,直到积中的整数部分为零,或者整数部分为1,此时0或1为二进制的最后一位。或者达到所要求的精度为止。

    然后把取出的整数部分按顺序排列起来,先取的整数作为二进制小数的高位有效位,后取的整数作为低位有效位。 

    十进制小数转二进制

    如:0.625=(0.101)B

    0.625*2=1.25======取出整数部分1 0.25*2=0.5========取出整数部分0 0.5*2=1==========取出整数部分1 

    再如:0.7=(0.1 0110 0110...)B

    0.7*2=1.4========取出整数部分1 0.4*2=0.8========取出整数部分0 0.8*2=1.6========取出整数部分1 0.6*2=1.2========取出整数部分1 0.2*2=0.4========取出整数部分0  0.4*2=0.8========取出整数部分0 0.8*2=1.6========取出整数部分1 0.6*2=1.2========取出整数部分1 0.2*2=0.4========取出整数部分0
    展开全文
  • 二进制的转换 了解进制的转换(二、八、十、十六) 二进制:二进制数据是用0和1两个数码来表示的数。它的基数为2,进位规则是“逢二进一”,借位规则是“借一当二”。 八进制:在八进制数中,每一位用0—7八个...
  • 二进制数、八进制数、十六进制数转换为十进制数方法:按展开求和 与十进制 (1)二进制转十进制 方法:“按展开求和” 【例】: 规律:个位上数字次数是0,十位上数字次数是1,......,...
  • 2.话不多说,二进制(B)、八进制(O)、十六进制(H)转换为十进制(D)方法:按展开求和;举个例子(二进制转换为十进制):整数部分从左至右为2从0开始幂次方,小数部分为2从-1开始幂次方;如下图所示:3.十...
  • 比如要将十进制的29转成二进制: 用29除以2,商写在下面,余数写在商的右边。 除到商为0为止,然后倒序排列余数,得到11101即为二进制二进制转十进制,采用按相加法 比如十进制29的二进制为11101,转换成十...
  • 1、十进制 与 二进制之间转换(1)、十进制转换为二进制,分为整数部分和小数部分整数部分方法:除2取余法,即每次将整数部分除以2,余数为该位数,而商继续除以2,余数又为上一个位数。这个步骤一直...
  • 先记一下二进制数与八进制数之间的对应关系:二进制八进制00000011010201131004101511061117二进制转换成八进制的方法是,取三合一法,即从二进制的小数点为分界点,向左(或向右)每三位取成一位,分好组以后,对照...
  • 展开全部二进制转换为八进制方法:1、取三合一法,即从二进制的小数点为分界点,32313133353236313431303231363533e58685e5aeb931333431366431向左(向右)每三位取成一位,接着将这三位二进制按相加,得到的数就是...
  • 二进制

    2021-01-31 15:08:52
    相加: 把二进制数首先写成加权系数展开式, 然后按十进制加法规则求和 十进制转二进制 整数部分: "除 2 取余, 逆序排列"法 **小数部分: "乘 2 取整, 顺序排列"法 ** **计算机中信息存储单位 ** ...
  • 一、二进制数转换成十进制数 由二进制数转换成十进制数基本做法是,把二进制数首先写成加权系数展开式,然后按十进制加法规则求和。这种做法称为"按相加"法。 二、十进制数转换为二进制数 十进制数转换为...
  • 理论:使用按展开的方法,具体操作为,将R进制的每一位数值用R^k形式表示,即幂底数是R指数为k,指数k以与小数点相隔的码数为准.如果数在小数点左边则k就是数点相隔的码数,若是在右边则变成与数点相隔的码数+1 ...
  • 进制也就是进制位,我们常用进制包括:二进制、八进制、十进制与十六进制,它们之间区别在于数运算时是逢几进一位。比如二进制是逢2进一位,十进制也就是我们常用0-9是逢10进一位。 1 十进制转二进制 方法为:...
  • 二进制与十六进制的转换

    千次阅读 热门讨论 2017-04-16 19:27:20
    3.二进制转换成十六进制的方法是,取四合一法,即从二进制的小数点为分界点,向左(或向右)每四位取成一位,如图3所示 4.组分好以后,对照二进制与十六进制数的对应表(如图2中所示),将四位二进制按相加
  • 二进制数与十进制数转换 聊二进制运算前,我们先看看二进制值与十进制数值是如何相互转换, 十进制转换成二进制 ...只需将二进制各数位值和位相乘,然后将相乘结果相加即可,有木有...
  • 二进制数 01100011 转换成十进制数是什么?二进制数 01100011 转换成十进制数是99。拓展:进制转换进制转换是人们利用符号来计数方法。进制转换由一组数码符号和两个基本因素“基数”与“位”构成。基数是指...
  • 二进制与十进制之间转换 辗转相除法(十进制转二进制) 位展开法(二进制转十进制)
  • 那么把记下来的余数从最后一个往前排,一直排到第一个记下来的余数,组成的一组由1和0组成的数就是这个十进制的二进制数 2)二进制转十进制   把二进制展开,也就是把每一项分开,然后都乘以2的某个次方,这个...
  • 一、 二进制 1. 二进制转十进制 整数二进制用数值乘以2的幂次...取三合一法,即从二进制的小数点为分界点,向左或向右每三位取成一位(不足三位时补零),接着将这三位二进制按相加,然后,按顺序进行排列,小...
  • 上节我们对二进制、八进制和十六进制进行了说明,本节重点讲解不同进制之间转换,这在编程中经常会用到,尤其是C语言。SANFUC:进制学习(1):二进制、八进制和十六进制​zhuanlan.zhihu.com将二进制、八进制、...
  • 方法为:把二进制数按展开、相加即得十进制数。 1.2 二进制与八进制之间转换 八进制转二进制 方法为:八进制数通过除2取余法,得到二进制数,对每个八进制为3个二进制,不足时在最左边补零。 二进制转八进制...
  • 进制转换:二进制、八进制、十六进制、十进制之间转换 不同进制之间转换在编程中经常会用到,尤其是C语言。 将二进制、八进制、十六进制转换为十进制 二进制、八进制和十六进制向十进制转换都非常容易,就是“按...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,038
精华内容 815
关键字:

二进制的权