精华内容
下载资源
问答
  • 绒绒小梧桐2020-02-24 10:13:41二进制转十进制,十进制转二进制的算法十进制转二进制:用2辗转相除至结果为1将余数和最后的1从下向上倒序写 就是结果例如302302/2 = 151 余0151/2 = 75 余175/2 = 37 余137/2 = 18 余...

    绒绒小梧桐

    TB10fDzdND1gK0jSZFsXXbldVXa-36-32.png

    2020-02-24 10:13:41

    二进制转十进制,十进制转二进制的算法

    十进制转二进制:

    用2辗转相除至结果为1

    将余数和最后的1从下向上倒序写 就是结果

    例如302

    302/2 = 151 余0

    151/2 = 75 余1

    75/2 = 37 余1

    37/2 = 18 余1

    18/2 = 9 余0

    9/2 = 4 余1

    4/2 = 2 余0

    2/2 = 1 余0

    故二进制为100101110

    二进制转十进制

    从最后一位开始算,依次列为第0、1、2...位

    第n位的数(0或1)乘以2的n次方

    得到的结果相加就是答案

    例如:01101011.转十进制:

    第0位:1乘2的0次方=1

    1乘2的1次方=2

    0乘2的2次方=0

    1乘2的3次方=8

    0乘2的4次方=0

    1乘2的5次方=32

    1乘2的6次方=64

    0乘2的7次方=0

    然后:1+2+0

    +8+0+32+64+0=107.

    二进制01101011=十进制107.

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

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

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

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

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

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

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

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

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

    回答者:HackerKinsn - 试用期 一级 2-24 13:31

    1.二进制与十进制的转换

    (1)二进制转十进制

    方法:"按权展开求和"

    例:

    (1011.01)2 =(1×23+0×22+1×21+1×20+0×2-1+1×2-2)10

    =(8+0+2+1+0+0.25)10

    =(11.25)10

    (2)十进制转二进制

    · 十进制整数转二进制数:"除以2取余,逆序输出"

    例: (89)10=(1011001)2

    2 89

    2 44 …… 1

    2 22 …… 0

    2 11 …… 0

    2 5 …… 1

    2 2 …… 1

    2 1 …… 0

    0 …… 1

    · 十进制小数转二进制数:"乘以2取整,顺序输出"

    例:

    (0.625)10= (0.101)2

    0.625

    X 2

    1.25

    X 2

    0.5

    X 2

    1.0

    2.八进制与二进制的转换

    例:将八进制的37.416转换成二进制数:

    37 . 4 1 6

    011 111 .100 001 110

    即:(37.416)8 =(11111.10000111)2

    例:将二进制的10110.0011 转换成八进制:

    0 1 0 1 1 0 . 0 0 1 1 0 0

    2 6 . 1 4

    即:(10110.011)2 =(26.14)8

    3.十六进制与二进制的转换

    例:将十六进制数5DF.9 转换成二进制:

    5 D F . 9

    0101 1101 1111.1001

    即:(5DF.9)16 =(10111011111.1001)2

    例:将二进制数1100001.111 转换成十六进制:

    0110 0001 . 1110

    6 1 . E

    即:(1100001.111)2 =(61.E)16

    展开全文
  • Im doing a colledge assignment which is have us create a python program to convert binary to decimal without using the bin() function or list(). I'm plan to have each 1's and 0's stored in a function....

    Im doing a colledge assignment which is have us create a python program to convert binary to decimal without using the bin() function or list(). I'm plan to have each 1's and 0's stored in a function which will be multiplied later. However, I'm not sure how am i suppose to do so

    解决方案

    Well, you could pass the binary number as a string, and iterate over it in reverse order, multiplying each 0 or 1 by 2^n, where n is a number incremented at each loop cycle.

    def bin2dec(b):

    number = 0

    counter = 0

    for i in b[::-1]: # Iterating through b in reverse order

    number += int(i)*(2**counter)

    counter += 1

    return number

    bin2dec("101010") # 42

    EDIT : Like Byte Commander did, you could also use enumerate in the loop instead of a manuel counter, it serve the same purpose.

    def bin2dec(b):

    number = 0

    for idx, num in enumerate(b[::-1]): # Iterating through b in reverse order

    number += int(num)*(2**idx)

    return number

    展开全文
  • 进制转换:二进制、八进制、十六进制、十进制之间的转换 不同进制之间的转换在编程中经常会用到,尤其是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语言编程中,二进制、八进制、十六进制之间几乎不会涉及小数的转换,所以这里我们只讲整数的转换,大家学以致用足以。另外,八进制和十六进制之间也极少直接转换,这里我们也不再讲解了。

    展开全文
  • python十进制转二进制python中十进制转二进制使用 bin() 函数。bin() 返回一个整数 int 或者长整数 long int 的二进制表示。下面是使用示例:>>>bin(10)'0b1010'>>> bin(20)'0b10100'补充:十进制转8进制和16进制的...

    python十进制转二进制

    python中十进制转二进制使用 bin() 函数。

    bin() 返回一个整数 int 或者长整数 long int 的二进制表示。

    下面是使用示例:

    >>>bin(10)

    '0b1010'

    >>> bin(20)

    '0b10100'

    补充:十进制转8进制和16进制的方法:

    # -*- coding: UTF-8 -*-

    # 获取用户输入十进制数

    dec = int(input("输入数字:"))

    print("转换为八进制为:", oct(dec))

    print("转换为十六进制为:", hex(dec))

    内容扩展:

    #-*- coding: utf-8

    from decimal import Decimal

    def bTod(n, pre=4):

    '''

    把一个带小数的二进制数n转换成十进制

    小数点后面保留pre位小数

    '''

    string_number1 = str(n) #number1 表示二进制数,number2表示十进制数

    decimal = 0 #小数部分化成二进制后的值

    flag = False

    for i in string_number1: #判断是否含小数部分

    if i == '.':

    flag = True

    break

    if flag: #若二进制数含有小数部分

    string_integer, string_decimal = string_number1.split('.') #分离整数部分和小数部分

    for i in range(len(string_decimal)):

    decimal += 2**(-i-1)*int(string_decimal[i]) #小数部分化成二进制

    number2 = int(str(int(string_integer, 2))) + decimal

    return round(number2, pre)

    else: #若二进制数只有整数部分

    return int(string_number1, 2)#若只有整数部分 直接一行代码二进制转十进制 python还是骚

    def dTob(n, pre=4):

    '''

    把一个带小数的十进制数n转换成二进制

    小数点后面保留pre位小数

    '''

    string_number1 = str(n) #number1 表示十进制数,number2表示二进制数

    flag = False

    for i in string_number1: #判断是否含小数部分

    if i == '.':

    flag = True

    break

    if flag:

    string_integer, string_decimal = string_number1.split('.') #分离整数部分和小数部分

    integer = int(string_integer)

    decimal = Decimal(str(n)) - integer

    l1 = [0,1]

    l2 = []

    decimal_convert = ""

    while True:

    if integer == 0: break

    x,y = divmod(integer, 2) #x为商,y为余数

    l2.append(y)

    integer = x

    string_integer = ''.join([str(j) for j in l2[::-1]]) #整数部分转换成二进制

    i = 0

    while decimal != 0 and i < pre:

    result = int(decimal * 2)

    decimal = decimal * 2 - result

    decimal_convert = decimal_convert + str(result)

    i = i + 1

    string_number2 = string_integer + '.' + decimal_convert

    return float(string_number2)

    else: #若十进制只有整数部分

    l1 = [0,1]

    l2 = []

    while True:

    if n == 0: break

    x,y = divmod(n, 2) #x为商,y为余数

    l2.append(y)

    n = x

    string_number = ''.join([str(j) for j in l2[::-1]])

    return int(string_number)

    以上就是本次介绍的全部相关知识点,感谢大家的学习和对脚本之家的支持。

    展开全文
  •  首先介绍 二进制转换十进制二进制数第0位的权值是2的0次方,第1位的权值是2的1次方……所以,设有一个二进制数:101100100,转换为10进制为:356用横式计算(从右往左算)0×20+0×21+1×22+0×23+0×24+1×25+1×26...
  • 本文主要讲了单片机二进制转十进制程序代码,希望对你的学习有所帮助。
  • C语言十进制转二进制代码实例用C语言实现将十进制转化为二进制,并统计转换后的二进制码中1的个数。#include int binaryNum[16]; //存放转换后得到的二进制码int count=0; //计数十进制整数被2除的次数int oneCount=...
  • )十进制转二进制简单的来讲,就是把一个十进制的数÷2,一直÷,直到不能除了,就像是1÷2,在十进制转二进制的时候,它的答案为0,没有余数就写0,然后把前面的余数全部合并在一起,不是加在一起,如果第一个数是0...
  • 1、十进制转换二进制十进制对2整除,得到的余数的倒序即为转换而成的二进制(十进制转换二进制示意图)转换函数#include#include#include#include#includeusing namespace std;void convert_10_to_2(int num){ vector&...
  • 好的,首先在这里发帖,如果问题不可行,请原谅并忽略背景:我是计算机科学160。...提示是读取只包含1和0的整数,逐位处理二进制数并报告十进制等效值。现在,我从一个同学那里得到了一些提示,这至少...
  • Matlab中有二进制转十进制的函数,“bin2dec”,示例如下: 但是这个函数只能进行整数转换,如果有小数的话: 由于需要,最近写了一个小程序,实现带小数的二进制转十进制,先看代码: clc clear all % 整数...
  • C语言算法之将十进制数转换成二进制

    万次阅读 多人点赞 2018-06-20 14:35:29
    导语:在C语言中没有将...下面给大家讲述一下如何编程实现将十进制数转换成二进制数。 先将源代码展示给大家: #include &lt;stdio.h&gt; void main() { //进制转换函数的声明 int transfer(int x)...
  • // 十进制转十六进制 Integer.toHexString(int i) ...// 十进制转二进制 Integer.toBinaryString(int i); // 十六进制转十进制 Integer.valueOf("ffff",16).toString(); Integer.parseInt("27",16)...
  • 例3:用C++实现十进制转二进制或者十进制转十六进制  【分析】数字的值由两部分组成:数字和位权值。二进制就是位权值为2的幂函数,十六进制就是位权值为16的幂函数。  我们将十六进制进行转换的时候,可以利用...
  • 十六进制-二进制十进制转换,希望对大家有帮助!采用C语言编程。可以用DEV C++ 运行!
  • 对python进制转换(二进制十进制和十六进制)及注意事项感兴趣的小伙伴,下面一起跟随编程之家 jb51.cc的小编两巴掌来看看吧!使用内置函数实现进制转换实现比较简单,主要用到以下函数:bin()、oct()、int()、hex...
  • 带小数的二进制转十进制(C代码)

    千次阅读 2018-12-16 20:52:56
    思路:处理带小数的二进制转十进制,我们一般可以把它分为两部分,整数部分和小数部分,整数部分二进制转十进制采用逆向累加法,小数二进制转十进制采用正向累加法,然后总体相加即可。 #include&lt;stdio.h&...
  • 24位二进制转十进制程序已通过串口测试成功,直接调用子函数即可使用。
  • Python中进行进制的转换可以通过它的内置函数来实现,今天小编我就来分享一下使用Python进行二进制十进制,八进制的转换经验。工具/原料电脑Python方法/步骤1第一步,打开电脑的cmd命令窗口,然后进入Python解释器...
  • #include "iostream" using namespace std; #define MAX 50 int main()//二转十 ... cout 请输入二进制数,并以‘$’结束:"; char elem2[MAX]; int flag = 1; char ch; int i = 0; while (flag) {
  • 位运算在计算机编程中经常用到,所以掌握十进制二进制间的转换十分重要。十进制:由 0~9 十个数字组成二进制:由 0和1 两个数字组成1、整数转换十进制转二进制的原理:十进制的数除以2,直到商为0,最后反向取余数...
  • 使用内置函数实现进制转换...二进制转十进制使用函数:int()实例:123#结果是4int('100',2)注意:上述一定不要忘记加引号,因为二进制是一个字符串如果不加引号会出现如下错误:Traceback (most recent call last):...
  • 十进制转换为十六进制,也就是 采用 除k取余法 ,直接让10处以16,再对 数据如果小于10和大于10进行处理,代码如下: #include<iostream> #include<string> using namespace std; int main() { ...
  • 进制转换原理 二进制转十进制 二进制是计算机数据的存储形式,它是由一串0和1...利用二进制转十进制原理,从低位起将每3位二进制转为1位十进制 然后进行替换即可。 二进制转十六进制 利用二进制转十进制原理,从低位起
  • 对于基础薄弱的读者,本节的内容可能略显晦涩和枯燥,如果觉得吃力,可以暂时跳过,用到的时候再来...将二进制、八进制、十六进制转换为十进制二进制、八进制和十六进制向十进制转换都非常容易,就是“按权相加”。...
  • python3 利用栈 将十进制转换为二进制十进制转换二进制代码逻辑十进制转换为二进制,采用的“除以2求余数”的算法。(将整数不断除以2,每次得到余数就是由低到高的二进制位)如100转换为二进制:100/2=50....(余数...
  • 二进制、八进制、十六进制转换为十进制 二进制、八进制和十六进制向十进制转换都非常容易,就是“按权相加”。所谓“权”,也即“位权”。 假设当前数字是 N 进制,那么: 对于整数部分,从右往左看,第 i 位的...
  • 编写函数,将一个二进制数(以字符串形式表示)转换为十进制数。函数原型如下: double binTodec(char *str); 其中str为接收的二进制数,函数的返回值为对应的十进制数。 如输入: 1010 则输出为: 10 又如...
  • #include void divideData(const float number, int &integer, float &decimal); //分离出整数和小数部分.void ... //打印整数部分的二进制形式.void printBinaryForDecimal(float &deci...
  • c语言二进制转十进制c语言二进制转十进制完整源码 c语言二进制转十进制完整源码 #include <stdio.h> int main() { int remainder, number = 0, decimal_number = 0, temp = 1; printf("\n Enter any binary...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 124,133
精华内容 49,653
关键字:

二进制转十进制编程