Question20180128 十进制转换成二进制浮点数

  如何将十进制的浮点数 转换二进制的浮点数,分为两部分:

  • 1. 先将整数部分转换为二进制,
  • 2. 将小数部分转换为二进制, 然后将整数部分与小数部分相加。

  以 20.5 转换为例,20转换后变为10100;0.5  要转换二进制,需要乘2, 乘完之后 取整数部分,然后用乘的结果减去整数部分, 然后接着乘2, 直至最后没有小数或者小数出现循环,  即乘完.如果等于0, 就取前面不为0的部分.

0.5 * 2  = 1.0 (取1)

0 * 2 = 0   (0)

所以,  转换后 0.5 = 0.1,

所以 20.5 转换二进制后, 20.5 = 10100.1(二进制)

--------------------------------

再看一个浮点数 20.3

20 = 10100 (二进制)

0.3  * 2= 0.6  (0)

0.6  * 2 = 1.2  (1)

0.2  *  2=  0.4 (0)

0.4  * 2 = 0.8  (0)

0.8  *2 = 1.6   (1)

计算到这里, 将再出现0.6,进入循环了,所以,结果

0.3  = 0.010011001...1001

所以20.3 = 10100.010011001...1001 (二进制).

原文地址:https://www.cnblogs.com/lin-jing/p/8370133.html

时间: 2024-09-30 16:22:26

Question20180128 十进制转换成二进制浮点数的相关文章

十进制转换成二进制以 二进制转换成 8进制和16进制

十进制转换成二进制 举例:752(十进制数) --> 转换成 二进制数 从下往上 读取数据 二进制数为 : 011110000 2.二进制转换成8进制 (开头用 0 表示) 111 -> 表示的十位数 为 7,也是 8进制 每位上 最大的数字 011110000 转换为  8进制 ,从右到左  ,三位 隔开      011-110-000 , 3.二进制转换成16进制(开头用0x表示) 与 二进制转换 大体相同,区别在于 , 在二进制数中,每四位数隔开 ,再分别计算 得到十进制 ,再 进行

递归代码将十进制转换成二进制输出

这段代码将十进制转换成二进制输出,代码很简洁干练 #include<stdio.h> #include<string.h> void DtoB(int n) {  if(n)  {   DtoB(n/2);   printf("%d",n%2);  } } int main() {  int n;  scanf("%d",&n);  DtoB(n);  return 0; }

C 利用移位运算符 把十进制转换成二进制

#include <stdio.h> int main(void){ //利用移位运算符 把十进制转换成二进制 int c; printf("输入数字:");//8 scanf("%d",&c); //最高位和次高位都要移动到最低位 //补码:00 0000 1000 //逻辑右移>>:00 0000 1000 //printf("%d",8<<2);return; int i = sizeof(c)*

十进制转换成二进制列表

a = [[1, 2, 3, 4, 5, 6]] 转换后: z = [[ 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.], [ 0., 0., 0., 0., 0., 0., 0., 0., 1., 0.], [ 0., 0., 0., 0., 0., 0., 0., 0., 1., 1.], [ 0., 0., 0., 0., 0., 0., 0., 1., 0., 0.], [ 0., 0., 0., 0., 0., 0., 0., 1., 0., 1.],

用Java把十进制转换成二进制

第一种方式是用循环去做: public class Test { public static void main(String[] args) { int a = 8; // 要转换的十进制 String ejz = ""; for(; a != 0; a /= 2) { ejz = a % 2 + ejz; } System.out.println(ejz); } } 第二种方式是用递归: public String ejz(int n) { int tmp = n % 2; if(

将十进制转换成二进制输出,递归写法

#include <stdio.h> #include <stdlib.h> #include <string.h> void binary_num(int, int); int main( int argc, char* argv[] ) { int a = 30; binary_num(a, sizeof(a) * 8); printf("\n"); system("pause"); return 0; } void bina

python 十进制转换成任意进制

记得大学时代,参加学校举行的编程大赛,其中有道题是: 编写一函数,实现十进制转换成十六进制. 看起来非常简单的一道题,最后竟然没有实现,想想都觉得惭愧啊,回去网上一搜,那是相当的easy的事情:时隔五六年了,工作中一直是用java,最近学习python,所以突然想到这个问题,就用python来实现这道题.下面使用两种方法分别实现: 一.循环 def decimalToNBaseByNormal(decimalVar, base): tempList = [] temp = decimalVar

十进制转换成其它进制的通用写法(查表法)

 //十进制转换成其它进制的通用写法(查表法)  class Transform  { public static void main(String[] args) {    toHex3(60);    System.out.println();    toOctal2(20);    System.out.println();    toBinary2(6); }  public static void toAny(int num,int base,int offSet)  {   char

FMDB使用的一点心得:数据库创建、制表、查询等以及image转换成二进制nsdata保存到数据库中

<span style="font-size:18px;">//首先,获取数据库的路径,(如果不存在,就是我们想要存储的路径),不用担心每次都创建数据库会重复,不会的,如果没有则创建,有了就不会再重复创建: //接下来,我们要制表,首先我们先查看我们的表是否已经存在,方法在下面代码中:如果存在则跳过,不存在则创建</span> -(void)DataBaseInit { //获取Document文件夹下的数据库文件,没有则创建 NSString *dbPath