二进制表示法在计算机科学中很重要,计算机中存储的所有值都以一串二进制数字,即0和1的形式存在。 如果无法在通用表示形式和二进制数字之间来回转换,我们将需要以非常奇怪的方式与计算机进行交互。

十进制的数字如何转换成二进制的,举几个例子就明白了:图片来自https://www.geeksforgeeks.org/program-decimal-binary-conversion/

将17作为被除数,除以2,每次所得的余数有两种可能,0或者1. 最后将余数从先到后依次排列,即得到二进制代表的数。最高次的为MSB,最低次的为LSB. 图片来自https://www.geeksforgeeks.org/program-decimal-binary-conversion/

References:https://www.electronics-tutorials.ws/binary/bin_2.html​www.electronics-tutorials.ws

As the decimal number is a weighted number, converting from decimal to binary (base 10 to base 2) will also produce a weighted binary number with the right-hand most bit being the Least Significant Bit or LSB, and the left-hand most bit being the Most Significant Bit or MSB, and we can represent this as:

由于十进制数是一个加权数,因此从十进制到二进制(从10到2)的转换也将产生一个加权的二进制数,其中最右边的位是最低有效位LSB,而最左边的位 是最高有效位或最高有效位,我们可以将其表示为MSB.

两个网站详细介绍转换过程:https://www.wikihow.com/Convert-from-Decimal-to-Binary​www.wikihow.comBase Conversion Tool​www.mathsisfun.com

但是,我们如何轻松地将整数值转换为二进制数呢? 答案是用“除以2”的算法,该算法使用堆栈来跟踪二进制结果的数字。

思路:图片来自http://www.pas.rochester.edu/~rsarkis/csc162/_static/lectures/Stacks.pdf

二进制算法:假定我们以大于0的整数作为开始的数字。

然后,将十进制数连续除以2,并记录余数。

第一次除以2可得到值是偶数还是奇数的信息。

-----偶数值的余数为0。它的一位数字为0。

-----奇数值将为1的余数,而数字1则为一位。

将二进制数构建为数字序列:第一个余数实际上是序列中的最后一位,最后一个余数是序列中的第一位。

我们再次看到了反转属性,表明堆栈很可能是解决问题的适当数据结构。

下面的Python代码实现了2分算法。

函数divide_by_2将一个十进制数的参数并将其重复除以2。

第 行使用内置的模运算符%提取余数,然后第 行将其加入堆栈。

在除法过程达到0之后,将在第-行中构造一个二进制字符串。

第 行创建一个空字符串。 二进制数字一次从堆栈中弹出,并附加到字符串的右端。 然后返回二进制字符串。

二进制转换算法可以轻松扩展,以针对任何基数执行转换。 计算机科学使用许多不同的编码。 其中最常见的是二进制,八进制(基数8)和十六进制(基数16)。

当我们超出基数10时,不能再简单地使用余数了,因为它们本身被表示为两位十进制数。相反,我们需要创建一组数字来表示超出9的那些余数。解决此问题的方法可以将数字集扩展为包括一些字母字符。例如,十六进制将十个十进制数字与前十六个字母字符一起用于16个数字。为实现此目的,将创建一个数字字符串,将数字存储在其相应位置。 0在位置0,1在位置1,A在位置10,B在位置11,依此类推。从堆栈中除去余数时,可以将其用于索引数字字符串,并且可以将正确的结果数字附加到答案中。

用python将十进制数转换成二进制数_python中的数据结构-将十进制数转换为二进制数...相关推荐

  1. 第六章第二十五题(将毫秒数转换成小时数、分钟数和秒数)(Convert milliseconds to hours, minutes, and seconds)

    **6.25(将毫秒数转换成小时数.分钟数和秒数)使用下面的方法头,编写一个将毫秒数转换成小时数.分钟数和秒数的方法. public static String convertMillis(long ...

  2. 将毫秒数转换成小时数、分钟数和秒数。

    使用下面的方法,编写一个将毫秒数转换成小时数.分钟数和秒数的方法: public static String convertMillis (long millis) 该方法返回形如"小时:分 ...

  3. python图片转换成文字_Python输出汉字字库及将文字转换为图片的方法

    用python输出汉字字库问题1:假设我们知道汉字编码范围是0x4E00到0x9FA5,怎么从十六进制的编码转成人类可读的字呢? 问题2:怎么把unicode编码的字写入文件呢,如果直接用open() ...

  4. python列表转换成数字_Python中列表元素转为数字的方法分析

    本文实例讲述了Python中列表元素转为数字的方法.分享给大家供大家参考,具体如下: 有一个数字字符的列表: numbers = ['1', '5', '10', '8'] 想要把每个元素转换为数字: ...

  5. python怎么把程序封装成函数_PYTHON中如何把固定格式代码,封装成一个函数?

    图片压缩的太厉害了,看不清楚,代码如下: with open('movies.csv', 'r') as f: reader = csv.reader(f) texts = list(reader) ...

  6. mysql将时间戳转换成日期_mysql 中查询时如何将时间戳转换为日期格式 / 日期格式转换为时间戳...

    在数据库的使用中,经常需要按指定日期来查询记录,以便于统计,而在数据库中,有很多存储的是时间戳, 也有的直接存日期,查询的时候可能不是那么好弄. mysql提供了两个函数: from_unixtime ...

  7. java实现十进制数转换成二进制数

    十进制数转换成二进制 import java.util.Scanner; public class Textwile { public static void main(String[] args) ...

  8. c++第二周任务一*(1‐1)编写递归函数将十进制数转换成二进制数输出。

    /任务一 /*(1‐1)编写递归函数将十进制数转换成二进制数输出. * 算法说明: */ #include <iostream> using namespace std; void d2b ...

  9. 2018阿里巴巴基础平台研发工程师实习生笔试题:一.十进制数转换成的二进制数中有几个1. 二.输出IP所在的网段

    1.输入一个十进制数转换成二进制数,输出二进制中有几个1? import java.util.Scanner;public class Main {public static void main(St ...

最新文章

  1. python难嘛-我没有基础,能否学会Python?Python难吗?
  2. Ubuntu Server中怎样卸载keepalived
  3. 用C++实现网络编程---抓取网络数据包的实现方法
  4. 论文浅尝 | 基于未知谓词与实体类型知识图谱的 Zero-Shot 问题生成
  5. 我的 CDMA 往事
  6. shell中单引号、双引号、反引号、反斜杠的使用
  7. 计算机考研数据结构高分笔记,2021版天勤计算机考研高分笔记系列:数据结构高分笔记(第9版)...
  8. T400换风扇解决开机fan error问题
  9. VastBase技术实践
  10. bugly android升级,android 新版本升级示例源码(bugly)
  11. 云查毒:避免恶意程序入侵的正确姿势
  12. Spica,一种路径推荐的路段结合方法
  13. Elastic App Search:免费的产品,可提供出色的搜索体验
  14. GeneMark-ES:真核生物编码基因预测软件
  15. dubbo配置多协议
  16. java的日历类_java 中的Calendar日历类
  17. 医疗器械三类申请需要提交什么材料?
  18. tensorflow.python.framework.errors_impl.InvalidArgumentError exception str() failed解决办法
  19. idea 离线安装translation 谷歌翻译
  20. 计算机水平怎么填范例,简历表个人能力怎么写(大学生个人获奖情况范例)

热门文章

  1. python queryset_Django之querySet如何解析使用
  2. 关于C语言标识符作用域的说法 正确的是,郑州大学远程教育-网教《C语言程序设计》在线测试2 满分代做QQ805006590...
  3. [UITabBar appearance]不生效
  4. 将ubuntu16制作成镜像或者docker
  5. 超全的数据库分类介绍
  6. 「实在RPA·财务数字员工」加速财务数字化全方位升级!
  7. 短诗零词 | 评价项羽的三首诗
  8. Assembly与Modules详解
  9. linux 一次io大小,Linux——标准IO篇
  10. maskedtextbox控件的使用