Python实现十进制和二进制之间相互转换

十进制转二进制

  • 原理:采用除2取余,逆序排列输出。
  • 实现:用2整除十进制整数,可以得到一个商和余数;再用2去除商,又会得到一个商和余数,如此进行,直到商为小于1时为止,然后依次翻转排序即可得到二进制数,在Python中我们采”//”(地板除)的方法实现转换
# 十进制整数转二进制def decToBin(num):    arry = []   #定义一个空数组,用于存放2整除后的商    while True:        arry.append(str(num % 2))  #用列表的append方法追加        num = num // 2   #用地板除求num的值        if num == 0:     #若地板除后的值为0,那么退出循环            break

    return "".join(arry[::-1]) #列表切片倒叙排列后再用join拼接

print(decToBin(10))

输出结果:1010

二进制转十进制

  • 原理:要从右到左用二进制的每个数去乘以2的相应次方求累加。
# 二进制整数转十进制def binToDec(binary):    result = 0   #定义一个初始化变量,后续用于存储最终结果    for i in range(len(binary)):        #利用for循环及切片从右至左依次取出,然后再用内置方法求2的次方        result += int(binary[-(i + 1)]) * pow(2, i)

    return result

print(binToDec("1010"))结果:10

原文地址:https://www.cnblogs.com/ddpeng/p/11302368.html

时间: 2024-10-08 23:03:33

Python实现十进制和二进制之间相互转换的相关文章

用python写十进制与二进制之间转换

很简单的一段,当练手 def s2e(): e = [0,0,0,0,0,0,0,0] s = int(input("请输入一个十位数:")) for i in range(0,8,1): e[i] = int(s%2) s=s//2 e.reverse() print("二进制数为:",e) def e2s(): s=[0,0,0,0,0,0,0,0] a=0 s=list(input("请输入一个二进制数:")) s.reverse() fo

十进制与二进制之间的自由转换

#include <stdio.h>#include<stdlib.h>int main(){    int Type,a,b[10],i=0,c=0;    printf("请输入转换类型 1:十进制转二进制:2:二进制转十进制;\n");    scanf("%d",&Type);    printf("请输入原数据\n");    scanf("%d",&a);    switch

十进制和二进制之间的相互转化

/* * * 每一个位上对应的数字 * …… 10 9 8 7 6 5 4 3 2 1 0 分别表示2的N次方 * …… 1024 512 256 128 64 32 16 8 4 2 1 * * 二进制转十进制 * 100100001 * 1 0 0 1 0 0 0 0 1 * 256 0 0 32 0 0 0 0 1 * 100100001=256+32+1=289 为零则表示该位上没有数字 ,个位数是1该数一定是基数.例如100100000则等于256+32=288 * * * 十进制转二

十进制与二进制之间的相互转化

当十进制数转化为二进制数时 用除2取余法,即将十进制数辗转除2取其余数,直至结果为1 .然后将结果1及余数以从后向前的方向正确写出即为 所求二进制数(位数不足时在前方补0). 例:    95求二进制 95 / 2 = 47 / 2 = 23 /2 = 11 / 2 = 5 / 2 = 2 / 2 = 1 余数:       1          1          1            1         1          0 结果为:01011111 当二进制数转化为十进制数时 用

python IP地址十六进制二进制间相互转换

# -*- coding:utf-8 -*- import ipaddress,sys def ip2hex_bin(file,*args,**kwargs):     try:         with open(file,'r',encoding='utf-8') as f:             allip = f.readlines()         ip = [ ipaddress.IPv4Address(ip.strip('\n')) for ip in allip ]     

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

一. 十进制与二进制之间的转换 (1) 十进制转换为二进制,分为整数部分和小数部分 ① 整数部分 方法:除2取余法,即每次将整数部分除以2,余数为该位权上的数,而商继续除以2,余数又为上一个位权上的数,这个步骤一直持续下去,直到商为0为止,最后读数时候,从最后一个余数读起,一直到最前面的一个余数.下面举例: 例:将十进制的168转换为二进制 得出结果 将十进制的168转换为二进制,(10101000)2 分析:第一步,将168除以2,商84,余数为0. 第二步,将商84除以2,商42余数为0.

《转载》二进制、八进制、十进制、十六进制之间转换

一. 十进制与二进制之间的转换 (1) 十进制转换为二进制,分为整数部分和小数部分 ① 整数部分 方法:除2取余法,即每次将整数部分除以2,余数为该位权上的数,而商继续除以2,余数又为上一个位权上的数,这个步骤一直持续下去,直到商为0为止,最后读数时候,从最后一个余数读起,一直到最前面的一个余数.下面举例: 例:将十进制的168转换为二进制 得出结果 将十进制的168转换为二进制,(10101000)2 分析:第一步,将168除以2,商84,余数为0. 第二步,将商84除以2,商42余数为0.

[汇编] 十进制和十六进制数之间的转换

刚接触汇编,很多细节搞得还不是很清楚,写了一个十进制和十六进制之间相互转换的程序(有点挫..)就当练手了. 贴出代码,希望路过的大牛可以给一些指导. 思路:(10->16)十进制数输入的时候单个字符处理,遇见回车结束输入,最后得到一个十进制数.然后循环左移(只处理4次),取后四位,也就是相当于/16 最后输出字符.(16->10)类似处理,先转换成10进制数(每次*16),最后依次取出每一位输出. ; multi-segment executable file template. data s

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

  最近复习软考各种进制之间的转换着实让人头疼,今天把常用的几种进制之间的转换问题简单做个总结,希望能够对大家有所帮助.   二进制八进制之间的转换   二进制与八进制之间的关系式每个八进制位对应三个二进制位,详情如下:   八进制:  0    1     2    3     4    5     6    7       二进制:000 001 010 011 100 101 110 111   实例:   27.651(8)  010111.110101001(2)   1001.000