首页 > 其他分享 >进制转换

进制转换

时间:2023-06-13 19:34:15浏览次数:25  
标签:转换 进制 16 整数 乘以 部分 十进制 小数

一、二进制、四进制、八进制、十六进制与十进制之间的互相转换

(1)十进制转换为二进制分为整数部分和小数部分     

  1、整数部分  

  除2取余法,即每次将整数部分除以2,余数为该位权上的数,而商继续除以2,余数又为上一个位权上的数,重复这个步骤,直到商为0为止,最后读数的时候从最后一个余数开始读起,一直到最前面的一个余数:  

  例:将十进制的168转换成二进制,得出结果(10101000)  

  分析:

  第一步,将168除以2,商84,余数为0。

  第二步,将商84除以2,商42余数为0。

  第三步,将商42除以2,商21余数为0。

  第四步,将商21除以2,商10余数为1。

  第五步,将商10除以2,商5余数为0。

  第六步,将商5除以2,商2余数为1。

  第七步,将商2除以2,商1余数为0。

  第八步,将商1除以2,商0余数为1。

  第九步,读数,因为最后一位是经过多次除以2才得到的,因此它是最高位,读数字从最后的余数向前读,即10101000

  2、小数部分
  乘2取整法,即就爱那个小数部分乘以2,并取整数部分,剩下的小数继续乘以2,然后取整数部分,剩下的小数部分又乘以2,一直取到小数部分为0为止,如果永远不能为0,就同十进制数的四舍五入一样,按照要求保留多少位小数,根据后面一位是0或者1进行取舍,如果是0舍掉,如果是1进入一位,0舍1入,读数要从前面的整数读到后面的整数:

  例1:将0.125转换成二进制,得出结果(0.001)

  分析:

  第一步,将0.125乘以2,得0.25,则整数部分为0,小数部分为0.25。

  第二步, 将小数部分0.25乘以2,得0.5,则整数部分为0,小数部分为0.5。

  第三步, 将小数部分0.5乘以2,得1.0,则整数部分为1,小数部分为0.0。

  第四步, 读数,从第一位读起,读到最后一位,即为0.001。

  例2:将0.45转换为二进制(保留到小数点第四位),得出结果(0.0111)

  分析:

  第一步,将0.45乘以2,得0.9,则整数部分为0,小数部分为0.9。

  第二步, 将小数部分0.9乘以2,得1.8,则整数部分为1,小数部分为0.8。

  第三步, 将小数部分0.8乘以2,得1.6,则整数部分为1,小数部分为0.6。

  第四步, 将小数部分0.6乘以2,得1.2,则整数部分为1,小数部分为0.2。

  第五步, 将小数部分0.2乘以2,得0.4,则整数部分为0,小数部分为0.4。

  第六步, 将小数部分0.4乘以2,得0.8,则整数部分为0,小数部分为0.8。

  第七步, 读数,从第一位读起,读到最后一位,即为0.011100,保留小数点后四位结果是0.0111。  

  当第五次做乘法时候,得到的结果是0.4,那么小数部分继续乘以2,得0.8,0.8又乘以2的,到1.6这样一直乘下去,最后不可能得到小数部分为零,因此,这个时候只好学习十进制的方法进行四舍五入了,但是二进制只有0和1两个,于是就出现0舍1入。这个也是计算机在转换中会产生误差,但是由于保留位数很多,精度很高,所以可以忽略不计。那么,我们可以得出结果将0.45转换为二进制约等于0.0111

(2)二进制转换为十进制分为整数部分和小数部分   

  1、整数部分

  按权相加法,即将二进制每位上的数乘以权,然后相加之和即是十进制数,二进制整数部分从整数数字个数-1开始

  例1:将1011转换成十进制(从4-1次幂开始)

  1*23+0*22+1*21+1*20 =8+0+2+0 =10

  例2:将101010转换成十进制(从6-1次幂开始)

  1*25+0*24+1*23+0*22+1*21+1*20 =32+0+8+0+2+0 =42

  2、小数部分

  按权相加法,即将二进制每位上的数乘以权,然后相加之和即是十进制数,在小数部分从-1开始

  例1:将0.101转换成十进制(从-1次幂开始)

  1*2-1+0*2-2+1*2-3 = 1*1/21+0*1/22+1*1/23 =1/2+0+1/8=0.625

  例2:将0.1011转换成十进制(从-1次幂开始)

  1*2-1+0*2-2+1*2-3 +1*2-4= 1*1/21+0*22+1*1/23+1*1/24 =1/2+1/8+1/16=11/16=0.6875

(3)十进制转换四、八、十六进制同理

  1、整数部分

  ①、十进制转换四进制:除4取余法,即每次将整数部分除以4

    例:将十进制1011转换成四进制数字:1011/4=252...3,252/4=63...0,63/4=15...3,15/4=3...3,3/4=0...3,所以结果是33303

  ②、十进制转换八进制:除8取余法,即每次将整数部分除以8

    例:将十进制1011转换成八进制数字:1011/8=126...3,126/8=15...6,15/8=1...7,1/8=0...1,所以结果是1763

  ③、十进制转换十六进制:除16取余法,即每次将整数部分除以16

    例:将十进制1011转换成十六进制数字:1011/16=63...3,63/16=3...15,3/16=3...3,十六进制中超过10的数字用字体代替,10=A,11=B,12=C,13=D,14=E,15=F,所以结果是3F3

  2、小数部分

  ①、十进制转换四进制:每次将小数部分乘以4,取整数部分,将剩余小数继续乘以4,直到乘到结果为整数为止

    例:将十进制0.111转换成四进制数字:0.111*4=0.444,0.444*4=1.776,0.776*4=3.104,0.104*4=0.416。。。。。。所以结果是0.0130122213323321312302023101

  ②、十进制转换八进制:每次将小数部分乘以8,取整数部分,将剩余小数继续乘以8,直到乘到结果为整数为止

    例:将十进制0.7356转换成八进制数字:0.7356*8=5.8848,0.8848*8=7.0784,0.0784*8=0.6272,0.6272*8=5.0176。。。。。。所以结果是0.570501100557000646

  ③、十进制转换十六进制:每次将小数部分乘以16,取整数部分,将剩余小数继续乘以16,直到乘到结果为整数为止

    例:将十进制0.111转换成十六进制数字:0.111*16=1.776,0.776*16=12.416,0.416*16=6.656,0.656*16=10.496。。。。。。所以结果是0.1c6a7ef9db22d1

(4)四、八、十六进制转换十进制同理

  

 

  

 

标签:转换,进制,16,整数,乘以,部分,十进制,小数
From: https://www.cnblogs.com/luym/p/17473356.html

相关文章

  • 将MultipartFile对象转换成File对象
    将MultipartFile对象转换成File对象//将MultipartFile对象转换成File对象privateFileconvertToFile(MultipartFilemultipartFile)throwsIOException{//获取文件名StringfileName=Objects.requireNonNull(multipartFile.getOriginalFilename......
  • [ARM汇编]计算机原理与数制基础—1.1.2 二进制与十进制数制转换
    在计算机中,我们通常使用二进制数制来表示数据,因为计算机的基本电平只有两种状态:高电平(通常表示为1)和低电平(通常表示为0)。而在我们的日常生活中,我们习惯使用十进制数制。为了方便理解,我们需要掌握二进制与十进制之间的转换方法。二进制转十进制将二进制数转换为十进制数时,我们......
  • 利用dotnet core的代码生成实现类型转换
    利用dotnetcore的代码生成的特性,自动生成类型转换的代码。类似于AutoMaper,但是代码生成近似于手写代码,不用反射,性能更好生成通过比较属性名字(不区分大小写)属性支持简单类型,类,List,Dictionary(key最好是string类型)在需要转换的类上标记特性:ConvertFrom、ConvertTo[Conv......
  • 二进制下的补码、反码、原码——适用于有符号整数
    简单定义简单起见,我们这里只考虑三位二进制数所能表示的范围,即${-4,-3,-2,-1,0,\1,\2,\3}$。机器数和真值一个数在计算机中的二进制表现形式,就是这个数的机器数(相当于数的原码)。例如,$-3$的机器数即为$111$,$2$的机器数为$010$。机器数在考虑最高位为符号位的情况下......
  • C语言:进制转换器,实现二进制、八进制、十进制、十六进制之间的相互转化
    1#include<stdio.h>2#include<stdlib.h>3#include<string.h>4#include<ctype.h>56intdec2bin(intn){//十进制转二进制7if(n==0){8return0;9}else{10return(n%2+10*de......
  • Python如何把字符串中形如'\uXXXX'的Unicode字符转换为原始字符
    jsonpickle保存的文本有形如"\u6211\u7684"的字符,看起来很不方便,怎么转换为原始字符呢?参考如下代码:importjsonpickle#定义一个包含Unicode编码字符的字符串text="我的名字是\u674e\u5b87\u5b87"#将字符串保存为JSON格式json_string=jsonpickle.encode(text)......
  • C# Type传参转换成泛型T
    publicclassTest{publicvoidExport<T1,T2>(){}publicvoidExportByClassName(stringtypename1,stringtypename2){Typet1=Type.GetType(typename1);Typet2=Type.GetType(typename2);Method......
  • C# 将 List<dynamic> 转换为 List<string>
    vardlist=newList<dynamic>(){"Guangzhou","Zhuhai","Shenzhen"};提取集合中的所有字符串,忽略所有其他类型,可以使用://Solution1:Includeonlystrings,nonullvalues,noexceptionsthrownvarstrings=dlist.OfType<stri......
  • 图片改二进制
    importjava.awt.image.BufferedImage; importjava.io.ByteArrayInputStream; importjava.io.ByteArrayOutputStream; importjava.io.File; importjava.io.IOException;   importjavax.imageio.ImageIO;   importsun.misc.BASE64Decoder; import......
  • 关于VS2022使用EF生成实体模型报错的问题:运行转换:System.NullReferenceException:对象
    起因:之前版本vs2022生成EF模型一直没有问题,在更新了最新的vs2022之后,版本号17.6+,出现此问题:运行转换:System.NullReferenceException:对象引用未设置为对象的示例。在Microsoft.VisualStudio.TextTemplatingD21DB4521EFD493FAE41A9CE9DA80C875F3084552987498BD518713BDE91D14A......