带小数的十进制数字和2进制数字相互转换的逻辑

不同进制是指不同位置上数字对应的权值不同。

2进制对应的权值是以2为底的指数20,21....等

1001001转换为十进制的话是1+8+64=73

从10进制向2进制转换:

整数部分“除2取余”,小数部分“乘2取余”

乘二取整是针对十进制小数部分转换为二进制的方法,而整数部分为除二取余,具体如下:

  1. 将整数部分辗转相除2,将余数倒序排列,即整数部分的二进制数
  2. 将小数部分辗转相乘2,将乘积的个位数部分正序排列,即小数部分的二进制数

例:

将32.12转换为二进制数

整数部分:

32÷2=16余0

16÷2=8余0

8÷2=4余0

4÷2=2余0

2÷2=1余0

1÷2=0余1

将余数倒序排列,为10 0000

小数部分:

0.12×2=0.24(个位0)

0.24×2=0.48(个位0)

0.48×2=0.96(个位0)

0.96×2=1.92(后续运算只取小数部分进行,若出现个位数,则对应的二进制位数为1)

0.92×2=1.84(个位1)

0.84×2=1.68(个位1)

0.68×2=1.36(个位1)

接下来可以无限计算下去,取约数,小数部分为0.0001111

所以32.12D=10 0000.0001111

原文地址:https://www.cnblogs.com/fcelebrity/p/9767718.html

时间: 2024-11-14 13:17:29

带小数的十进制数字和2进制数字相互转换的逻辑的相关文章

超级(无限)大的 --- 整型10进制数据与16进制数据相互转换

<html> <title>超级(无限)大的 --- 整型10进制数据与16进制数据相互转换</title> <head> <meta charset="utf-8"/> <meta name="keywords" content="数据压缩算法,超过整数表示范围的大数据算术运算,大进制数据互相转换" /> <meta name="keywords"

isxdigit(测试字符是否为16进制数字)

/*isxdigit(测试字符是否为16进制数字) 相关函数 isalnum,isdigit 表头文件 #include<ctype.h> 定义函数 int isxdigit (int c) 函数说明 检查参数c是否为16进制数字,只要c为下列其中一个情况则返回TRUE.16进制数字:0123456789ABCDEF 返回值 若参数c为16进制数字,则返回TRUE,否则返回NULL(0). 附加说明 此为宏定义,非真正函数. 范例 */ /*找出字符串str中为十六进制数字的字符*/ #inc

js 不同进制之间相互转换

如果a进制与b进制都不等于10,则十进制作为桥梁进行转换 例如 10进制的数字11 转换为3进制为102 10进制的数字11 转换为4进制为23 现在进行3进制转4进制 1.3进制转10进制 2.10进制转4进制 ================= 在js里.我们可以借助 parseInt 跟 NumberObject.toString(radix) 方法来实现 parseInt()将数字转换为10进制数字, NumberObject.toString(radix)将10进制数字转换为目标进制数

double四舍五入,商品金额大小写转换,设置货币的小数位数跟格式输出,进制转化

1:计算double值四舍五入的方法 对小数数值进行四舍五入,首先应该确认保留小数位, 如果数值的小数精度大于保留小数位,那么开始四舍五入计算.四舍五入的方法非常简单,在所有要丢失精度的小数位中加5,如果大于10则向前进位,最后计算出四舍五入的结果. /// <summary>计算double值四舍五入的方法 /// /// </summary> /// <param name="dbl">进行四舍五入的数值</param> /// &l

c++10进制转换为任意2-16进制数字

#include<stdio.h> #include<stdlib.h> #include<iostream> using namespace std; int main() { //十进制转换为若干进制>2,<16 = int num; int n;//2-16之间 int a; int i=0; cin>>num>>n; int s[100]; if(n>=2&&n<<16) { while(nu

使用Java将字符串转码utf-8成8进制数字

package demo0809.demo1; import java.io.UnsupportedEncodingException; import java.net.URLEncoder; public class Test333 { public static void main(String[] args) throws UnsupportedEncodingException { String str = URLEncoder.encode("中国", "UTF-8

Android 8位的16进制数字表示的颜色的含义

数值以#符号开头. 前2位数字代表颜色的透明度, 00~ff,  00表示该颜色完全透明, ff表示该颜色完全不透明.  后6位数字代表颜色的RGB值. 如: 000000代表黑色, ffffff代表白色, ff0000代表红色, 00ff00代表绿色, 0000ff代表蓝色, ffff00代表黄色等. 下面以侧滑菜单的背景颜色(此处设置为黄色)为例, 对透明度进行说明. 1. 设置黄色的透明度为ff(表示该颜色完全不透明): 效果图如下: 2. 设置黄色的透明度为00 (表示该颜色完全透明):

本大神教你用PHP把文本内容转换成16进制数字,进行加密

<?php $a="杨波"; $b = bin2hex($a); echo $a."<br />"; $c = pack("H*",$b); echo $c."<br />"; ?> 字符限制字符限制字符限制字符限制字符限制字符限制字符限制字符限制字符限制字符限制字符限制字符限制字符限制字符限制字符限制字符限制字符限制字符限制字符限制字符限制字符限制字符限制字符限制字符限制字符限制字符限制字

shell 进制转换

包括: i.任意进制转化为十进制((num=base#number)) [base和number必须一致,是同一种进制] ii.十进制转化为任意进制`echo "obase=进制;值"|bc` 和`echo "值 进制 o  p"|bc` [这里的值代表十进制数字] iii.任意进制互转:有了i和ii就可以用十进制做中间媒介值互转了. 如:二进制到十六进制 ((num=2#二进制数字)); hexValue=`echo "obase=16;num"