十进制有符号小数转换成二进制数的实现_Matlab实现_归一化处理

2023-11-13

在一些数据处理过程中,需要将一组十进制小数转换成二进制数存储或者计算,这种操作在FPGA的使用中会经常遇到。本文分析了十进制小数转换成二进制数的方法。

1.N位二进制数的取值范围

N位无符号型(unsigned)取值范围:2^N - 1 ~ 0;(可以表示2^N个数)

N位有符号型(signed)取值范围:-2^(N-1) ~ 2^(N-1) - 1;(可以表示2^N个数)

举例:N=10

无符号取值范围:1023~0;(2^10 - 1~0)

有符号取值范围:-512 ~ 511;(-2^9 ~ 2^9 - 1

2.十进制有符号小数量化为二进制数

第一步:确认需要量化的二进制数的位数;

第二步:将一组十进制数据进行归一化处理;

第三步:将归一化后的数据扩大2^(N-1) - 1 倍并进行取整;

第四步:判断数据大小,如果是正数也保持不变,如果是复数取其补码;

第五步:可以按照2进制或者16进制进行存储或者显示;

3.Matlab仿真代码

clear all
clc
% Step1:Quantization Widths(bits)
width = 12;
% Generate decimal fraction
N = 128;
for k = 1:N
    Data(k,1) = exp(-k/N) - 0.5;
end
% Step2:Normalize the Data
Nor_Data = Data/abs(max(Data)); 
% Step3:Multiply by 2^N-1 and Round numbers
Round_Data = fix(Nor_Data * ((2^(width - 1)) - 1));
% Step4:Judge Round_Data
for k = 1:length(Round_Data)
    if(Round_Data(k) >= 0)
        Round_Data(k) = Round_Data(k); 
    else
        Round_Data(k) = Round_Data(k) + 2^(width);
    end
end
% Step5:Display bin and hex
% Round_Data_bin = double(dec2bin(Round_Data,12)) - double('0');
Round_Data_bin = dec2bin(Round_Data,12);
for k = 1:length(Round_Data_bin(:,1))
    fprintf('Data(%d) = %.4f\t二进制显示 = ',k,Data(k));
    for j = 1:length(Round_Data_bin(1,:))
        fprintf('%c',Round_Data_bin(k,j));
    end
    fprintf('\t十六进制显示 = %03X\n',Round_Data(k))
end

仿真结果:

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

十进制有符号小数转换成二进制数的实现_Matlab实现_归一化处理 的相关文章

  • (5)Qt中的日期和时间

    QDate 日期对象格式化 d 没有前导零的日子 1 to 31 dd 前导为0的日子 01 to 31 ddd 显示 缩写 周一 周二 周三 周四 周五 周六 周日 dddd 显示 完整 星期一 星期二 星期三 星期四 星期五 星期六 星
  • 快速转载他人CSDN博客到自己博客中

    1 右键页面 选择审查元素 2 进入HTML代码页面 选择article content 如何快速找到article content 以谷歌浏览器为例子 鼠标右击 选择检查 点击小箭头 并把鼠标移动到文章内容中 看到baidu pl 点击下
  • 使用 JMeter 完成常用的压力测试

    JMeter 完成常用的压力测试 文档选项 将此页作为电子邮件发送 拓展 Tomcat 应用 下载 IBM 开源 J2EE 应用服务器 WAS CE 新版本 V1 1 摘自 http www 360doc com showWeb 0 0 2
  • C++基础之四个默认函数(构造,析构,拷贝构造,赋值运算符重载)

    文章目录 一 构造函数 构造函数的默认值 赋值方法 二 析构函数 三 拷贝构造函数 四 赋值运算符重载函数 一 构造函数 类的构造函数是类的一种特殊的成员函数 它会在每次创建类的新对象时执行 构造函数的名称与类的名称是完全相同的 并且不会返
  • A State-of-the-Art Survey on Deep Learning Theory and Architectures论文翻译分析

    A State of the Art Survey on Deep Learning Theory and Architectures 摘要 近年来 深度学习在各种应用领域取得了巨大成功 机器学习这一新领域发展迅速 已应用于大多数传统应用领
  • (超详细、带图带源码)Nacos注册中心的搭建与测试

    前言 本系列是从头开始进行学习Nacos的相关知识 从相关概念到业务开发等等 本篇是第三篇 主要知道为什么需要注册中心 为什么选择Nacos作为注册中心和Nacos作为注册中心的快速搭建 入门篇 阿里Nacos系列 为什么要选择Nacos和
  • 密码学技术在区块链系统中的应用

    密码学技术是区块链数据核心技术 P2P网络协议 共识机制 密码学技术 账户与存储模型 中核心的技术点 区块链主要用到的密码算法有哈希算法和加密算法 加密又包括对称性加密和非对称性加密两个概念 区块链系统里面一般常用到的是非对称加密 本文首先
  • 02-neo4j的基本命令

    1 插入节点 插入一个Person类别的节点 且这个节点有一个属性name 属性值为Andres CREATE n Person name 梁川川 CREATE n Person name 谢静静 CREATE n Person name

随机推荐

  • MySql数据库基础--常用函数&视图

    常用函数 日期函数 获取当前日期 select NOW 获取指定日期的日部分 select day now 获取指定日期的月部分 SELECT MONTH NOW 获取指定日期的n年部分 SELECT YEAR NOW date forma
  • Mysql锁

    文章目录 1 概述 2 分类 3 全局锁 4 表级锁 5 行级锁 1 概述 锁是计算机协调多个进程或线程并发访问某一资源的机制 在数据库中 除传统的计算资源 CPU RAM I O 的争用以外 数据也是一种供许多用户共享的资源 如何保证数据
  • 班级学生成绩统计管理系统---(C语言简易版)

    include
  • ViewPager2滑动页面滑动到最后再次滑动跳转到新页面 When swipe to left at the last page, jump to new page

    代码如下 package com example hrminiapp import androidx appcompat app AppCompatActivity import androidx viewpager2 widget Vie
  • MatConvNet的简单介绍和手写识别运用

    1 MatConvNet的简介 MatConvNet是一个实现卷积神经网络 CNN 的MATLAB工具箱 用于计算机视觉应用 它简单 高效 并且可以运行和学习最先进的CNN 许多用于图像分类 分割 人脸识别和文本检测的预训练CNN都有提供
  • Java - JUC -常用的并发工具类

    Condition Condition是JUC里面多线程协调通信的工具类 可以让一些线程一起等待条件即 Condition 只有当满足条件时 线程才会被唤醒 类似于 wait notify 在Condition中也有类似的实现 public
  • 数据压缩学习实验(四)LZW压缩算法的C++实现及其效率分析

    实验目的 掌握词典编码的基本原理 阅读C语言实现的LZW算法并用C 按自己理解实现LZW解码器并分析编解码算法 以及LZW算法对不同文件的压缩效果 LZW算法原理 关于更具体的图解LZW编解码可以参考 超级简单的数据压缩算法 LZW算法 编
  • ajax获取图片二进制,ajax 请求二进制流 图片

    ajax 请求二进制流图片 var url bootPATH server images 1 png var xhr new XMLHttpRequest xhr open GET url true xhr responseType blo
  • 人脸关键点检测和头部姿态估计数据集生成

    接上篇 人脸关键点检测和头部姿态估计数据集整理 1 借助于OpenPose生成人脸关键点和头部姿态 使用链接 https github com TadasBaltrusaitis OpenFace wiki Command line arg
  • 小白都能看懂 XAMPP的下载安装配置详细教程(含拒绝访问坑)

    话不相瞒 当初为了在XAMPP Apache MySQL PHP PERL 里面配置phpwind 我在卸载与安装之间来回了不下10次 但是我的phpwind始终还是安装不成功 我可能是招坑体质 真的很无奈 最终 我放弃了phpwind 废
  • openmv串口打包发送数据

    openmv端 import time from pyb import UART import ustruct uart UART 3 19200 uart init 19200 8 None 1 def send data d globa
  • hadoop搭建及常见问题

    这是本人在完全分布式环境下在Cent OS中配置Hadoop 0 20 203 0时的总结文档 但该文档也适合其他版本的Linux系统和目前各版本的Hadoop Hadoop 0 20之后的版本配置文件hadoop site xml被拆分成
  • 使用Python,OpenCV对图像进行亚像素点检测,并拟合椭圆进行绘制

    这篇博客将介绍如何使用Python OpenCV对图像进行亚像素检测 并对亚像素点进行椭圆拟合绘制 1 效果图 原始图上绘制拟合椭圆 VS 原始图上绘制拟合椭圆及亚像素点绘制随机半径及颜色的圆 VS 灰度图上绘制亚像素点效果图如下 我喜欢的
  • 安装 mysqlclient==1.3.12 报错:OSError: mysql_config not found

    安装 mysqlclient 1 3 12 报错 OSError mysql config not found Collecting mysqlclient 1 3 12 Using cached mysqlclient 1 3 12 ta
  • 【Mo 人工智能技术博客】时间序列预测——DA-RNN模型

    时间序列预测 DA RNN模型 作者 梅昊铭 1 背景介绍 传统的用于时间序列预测的非线性自回归模型 NRAX 很难捕捉到一段较长的时间内的数据间的时间相关性并选择相应的驱动数据来进行预测 本文将介绍一种基于 Seq2Seq 模型 Enco
  • 在centos7安装anaconda3操作手册

    一 Anaconda下载 进入anaconda官方网站下载个人免费版本 网站链接 点击download 选择Linux平台的安装包 二 Anaconda安装 1 执行如下指令 安装anaconda 进入当保存文件的目录 执行此指令 后期由于
  • Jina AI‘2021

    2022 农历新年进入倒数阶段 回望 2021 因为有了社区和开发者们的支持和助力 Jina AI 从产品 社区 到用户案例及团队 都取得了一些相当哇塞的成就 接下来 我们就一起来重温一下 2021 年 Jina AI 的惊喜变化 领取 J
  • 第十一天栈与队列

    20 有效的括号 力扣题目链接 opens new window 给定一个只包括 的字符串 判断字符串是否有效 有效字符串需满足 左括号必须用相同类型的右括号闭合 左括号必须以正确的顺序闭合 注意空字符串可被认为是有效字符串 题外话 括号匹
  • opencv项目实践一(答题卡识别)

    答题卡素材图片 思路 读入图片 做一些预处理工作 进行轮廓检测 然后找到该图片最大的轮廓 就是答题卡部分 进行透视变换 以去除除答题卡外的多于部分 并且可以对答题卡进行校正 再次检测轮廓 定位每个选项 对选项圆圈先按照竖坐标排序 再按照行坐
  • 十进制有符号小数转换成二进制数的实现_Matlab实现_归一化处理

    在一些数据处理过程中 需要将一组十进制小数转换成二进制数存储或者计算 这种操作在FPGA的使用中会经常遇到 本文分析了十进制小数转换成二进制数的方法 1 N位二进制数的取值范围 N位无符号型 unsigned 取值范围 2 N 1 0 可以