首页 > 其他分享 >十进制转二进制(等)倒数取余法的原理

十进制转二进制(等)倒数取余法的原理

时间:2024-05-09 16:13:26浏览次数:21  
标签:倒数 17 取余法 二进制 原理 十进制

十进制转二进制(等)倒数取余法的原理

我们知道:十进制转二进制(八进制等)的方法是倒数取余法,但很多同学只是死记硬背, 并不理解为什么这么做.

让我们用下面的例子来理解一下:

  • 把十进制数字17转换为二进制

    • 首先把17分解为$2^n$之和:$17 = 1 * 2^3 + 0 * 2^2 + 0 * 2^1 + 1 * 2^ 0$.
    • 显然,在这个分解式中,每个$2^n$的系数(0或1),恰恰对应了二进制第n+1位的数字, 所以17对应的二进制写法是: 0b 0000 1001.
    • 那么, 当我们把等式两边除以2的时候,除了最右侧的项$1 * 2^0$,都能被2整除. 因此, 我们得到的余数(即这一项的系数1)就是二进制右侧第1位的数字.
    • 而此时等式则变成了 $8 = 1 * 2^2 + 0 * 2^1 + 0 * 2^0$ . 两侧都自动去掉了余数.
    • 所以, 继续除以2, 就能逐次把最右侧项消除, 并得到其系数. 而如我们第二步所述, 这个系数, 就是二进制每一位的数字. 这就是倒数取余法的原理了.

十进制转八进制等也是同样的原理. over~

作者: 练块儿的程序员

出处:https://www.cnblogs.com/sunyujun16

本文版权归作者和博客园共有,欢迎转载,但必须保留此段声明,且在文章页面明显位置给出原文链接, 如有问题,可邮件[email protected]咨询.

标签:倒数,17,取余法,二进制,原理,十进制
From: https://www.cnblogs.com/sunyujun16/p/18182519

相关文章

  • binaascii:A Python 在二进制和 ASCII 之间转换
    binaascii是一个用于在二进制和ASCII之间转换的模块。b2a_base64是binaascii模块中的一种方法,它将base64数据转换为二进制数据。下面是这个方法的一个例子:importbase64importbinasciimsg="Tandrew"encoded=msg.encode('ascii')base64_msg=base64.b64encode......
  • struct:Python二进制数据结构
    在C/C++语言中,struct被称为结构体。而在Python中,struct是一个专门的库,用于处理字节串与原生Python数据结构类型之间的转换。本篇,将详细介绍二进制数据结构struct的使用方式。函数与Struct类struct库包含了一组处理结构值得模块级函数,以及一个Struct类。格式指示符将由字符串格......
  • 无符号整数转二进制字符串逆序输出
    无符号整数转二进制逆序在C语言中,要实现一个函数来传入一个八位无符号整数,并返回其二进制倒序的字符串,你可以使用以下步骤:分配足够的堆空间来存储倒序后的二进制字符串。利用位运算符获取当成8位无符号整数的二进制数可以从高位往遍历也可以从低位往高位遍历从高遍......
  • mORMot 1.18 第12章 Blobs(大二进制对象)
    mORMot1.18第12章Blobs(大二进制对象)有些情况下,mORMot会以BLOBs(大二进制对象)的形式保存和检索数据。TSQLRawBlob属性用于存储像图片和文件这样的二进制数据。以TDynArray.SaveTo二进制格式存储的动态数组。明确注册为BLOBs的记录。当从数据库中存储/检索时,BLOBs以Base64......
  • 模拟集成电路设计系列博客——6.2.1 二进制权重电阻转换器
    6.2.1二进制权重电阻转换器一种主流的实现D/A转换器的方式是将一组信号以二进制方式进行组合。这组二进制信号可以是电流(在电阻或者电流方式中),但二进制权重的电荷也经常使用。在这个章节中,将首先介绍店主方式,然后是和电荷重分布的模式和电流模式。在这个远离下并不能保证单调性,......
  • uboot: 制作环境变量的二进制文件
    依赖项uboot需要设置相关配置,比如存储的地址,大小,存储介质等等,一般是使用文件env.bin烧写到flash的某一段固定区域。#defineCONFIG_ENV_IS_IN_MMC#defineCONFIG_SYS_MMC_ENV_DEV0#defineCONFIG_ENV_OFFSET(0x2E0200)#defineCONFIG_ENV_SIZE(0x4000)/*envsize*/......
  • C# 二进制数使用按位与运算(&)来获取子集选中的值。
    需求:现在有一个二进制数整集all,一个子集sub,要求根据整集的值获取子集被选中的值是多少?//假设完整值是15,1248的和intall=15;//1248的和intsub=7;//124的和intresult=all⊂//输出7,选中124int......
  • 二进制文件内存映射
    点击查看代码#对二进制文件做内存映射#使用mmap模块对文件进行内存有映射操作importmmapimportos.pathdefmemory_map(filename,access=mmap.ACCESS_WRITE):""":paramfilename::paramaccess:mmap.ACCESS_WRITE:读写mmap.A......
  • 二进制数组
    点击查看代码#读写二进制结构数组fromfunctoolsimportpartialfromstructimportStruct#Writedefwrite_records(records,format,f):"""Writeasequenceoftupletoabinaryfileofstructures"""record_struct=Struct(format)......
  • 复杂二进制数据
    点击查看代码#读取嵌套型和大小可变的二进制结构fromitertoolsimportchainimportstruct#多边形数组polys=[[(1.0,2.1),(2.0,3.2),(3.0,4.3)],[(1.1,2.2),(2.1,3.3),(3.1,4.4),(4.1,5.5)],[(1.2,2.3),(2.2,3.4),(3.1,4.5)],]#......