FPGA图案--数字表示(代码+波形)

在数字逻辑系统,仅仅存在高低。所以用它只代表一个整数数字。并且有3代表性的种类。这是:原码表示(符号加绝对值值)、反码表示(加-minus标志)而补码(符号加补)。这三个在FPGA中都有着广泛的应用。以下分别讨论。

1、原码表示法

原码表示法是机器数的一种简单的表示法。採用符号位级联绝对值的方法表示数字。其最高位为符号位,用0表示正数,1表示负数;其余部分为绝对数值部分。原码一般用二进制形式表示。

比如,X1 = +1010110,X2 = -1001010,则其原码分别为:01010110和11001010

原码表示数的范围与二进制位数有关。当用8位二进制来表示小数原码时,其表示范围:最大值为0.1111111,其真值约为10进制中的0.99;最小值为1.1111111。其真值约为十进制的-0.99。

当用8位二进制来表示整数原码时。其表示范围:最大值为01111111。其真值为十进制的127;最小值为11111111。其真值为十进制的-127。

在原码表示法中。对0有两种表示形式,分别记为+0和-0,以8比特数据为例,其对应的表示为:+0=00000000、-0=10000000。

2、反码表示法

反码可由原码得到。

假设数字是正数,则其反码与原码一样。假设数字是负数,则其反码是对它的原码(符号位除外)各位取反而得到的。

比如:X1 = +1010110, X2=-1001010,则其对应的反码为01010110、10110101。

3、补码表示法

补码表示法师实际中应用最广泛的数字表示法。其表示规则例如以下:若是正数。补码、反码和原码的表示是一样的。若是负数,补码、反码和原码的表示都不一样。

由反码与原码之间的关键,负数的补码等于其反码在最低位加1。

4、各类表示方法小结

原码的长处就是乘除运算方便。不论正负数,乘除运算都一样,并以符号位决定结果的正负号;若做加法则须要推断两数符号是否同样。若作减法,还须要推断两数绝对值的大小,以使大数减小数。

补码的长处是。加法运算方便,不论数的正负都可直接相加。而符号位相同參加运算。

例:给出各类码字表示法的基本加法运算实例,并说明各自特点

(1)首先给出原码的运算演示样例。当中()d代表十进制数。

首先给出一个原码的减法计算实例,完毕“1 + (-1)= 0“”的操作。

(1)d + (-1)d = (0)d

假设读者直接利用原码来完毕上式运算,会发现用符号位的原码进行在加减运算的时候就会出现故障。将数据以8比特的表示形式为例,

(00000001)原 + (10000001)原 = (10000001)原 = (-2)d

计算结果是不对的,问题在于两点:首先。负数的符号位直接改变了计算结果符号;其次,绝对值部分计算也不对。

这说明原码无法直接完毕正数和负数的加法。

(2)既然,原码不能完毕正、负数相加。那么反码形式能够完毕此操作吗?仍然以”1 + (-1) = 0“ 为例,其对应的反码表达式例如以下:

(00000000)反 + (11111110)反 = (11111111)反 = (-0)d

则发现问题出如今+0和-0上。由于实际的计算中的零没有正负之分的。但上式标明了反码完毕正、负数相加后。其绝对值部分是正确的。因此能正确完毕正、负数相加的表达形式必然包括反码的特性。

(3)最后给出补码的相关特性说明,负数的补码就是对反码加1,而正数不变。

以8比特数据为例。通过(-128)d取代了(-10)d。所以其表示范围为【-128,127】。从直观上。补码消除了(+0)和(-0)。而且具备反码特点,那么到底其能完毕正、负加法运算吗?答案是肯定的,以下给出详细实例,所看到的

(00000001)补 + (11111111)补 = (00000000)补 = (0)d

基于以上讨论,能够得到一个基本结论:仅仅有补码才干正确完毕正负加法运算,并将减法运算转化为加法运算,从而简化运算规则。

但对于乘法操作。则以原码形式计算是最方便的。以下有实例。


演示1:原码进行乘法运算 -2 * 2 = -4

module mul(input clk,input rstn,input [7:0] a,input [7:0] b,output [14:0] q_mul,output reg [8:0] q_add,output reg[7:0] ra,output reg[7:0] rb);reg [13:0] rmul;always @(posedge clk or negedge rstn)if(!rstn)beginq_add <= 0;ra <= 0;rb <= 0;rmul <= 0;endelse begin//q_mul <= a*b;if(a[7]==1)ra = {a[7],~a[6:0] + 1};elsera = a;if(b[7]==1)rb = {b[7],~b[6:0] + 1};elserb = b;rmul <= ra[6:0]*rb[6:0];q_add <= {a[7],a} + {b[7],b};endassign q_mul = {a[7]^b[7],rmul};endmodule

演示2:通过reg signed实现

module signedMul(input clk,input rstn,input [7:0] a,input [7:0] b,output [15:0] q);reg signed[7:0] ra;reg signed[7:0] rb;always @(posedge clk or negedge rstn) beginif(~rstn) beginra <= 0;rb <= 0;endelse beginra <= a;rb <= b;endendassign q = ra * rb;endmodule



























版权声明:本文博主原创文章,博客,未经同意不得转载。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/287535.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

WPF效果第一百八十四篇之网页视频保存

一年一度的小学入学采集开始了;我一朋友很是头大,他说头都大了好几圈了;既要准备各种入学材料又要听线上专人视频直播讲解;然而在直播结束后,他发现自己仍是一脸疑惑;虽说直播有回访吧,但是他那蜗牛网速简直了;这时他场外找我,让我看能不能给他自己下载一份;1、毕竟第一次,直接…

【遥感数字图像处理】基础知识:第一章 绪论

第一章 绪 论 ◆ 课程学习要求 主要教学内容&#xff1a;遥感数字图像处理的概念和基础知识&#xff0c;遥感数字图像的几何处理&#xff0c;遥感图像的辐射校正&#xff0c;遥感数字图像的增强处理&#xff0c;遥感图像的计算机分类&#xff0c;遥感数字图像的分析方法&…

自定义Git

在安装Git一节中&#xff0c;我们已经配置了user.name和user.email&#xff0c;实际上&#xff0c;Git还有很多可配置项。 比如&#xff0c;让Git显示颜色&#xff0c;会让命令输出看起来更醒目&#xff1a; $ git config --global color.ui true这样&#xff0c;Git会适当地显…

[python opencv 计算机视觉零基础到实战] 九、模糊

一、学习目标 了解什么是卷积了解模糊的使用方法与应用 如有错误欢迎指出~ 二、了解模糊的应用 上一篇:[python opencv 计算机视觉零基础到实战] 八、ROI泛洪填充 2.1 了解卷积是什么 在本节中&#xff0c;卷积我们不过多的进行深入讲解&#xff0c;我本人对卷积也只是稍…

windbg的时间旅行实现对 C# 程序的终极调试!

一&#xff1a;什么是时间旅行 简而言之就是把程序的执行流拍成vlog&#xff0c;这样就可以对 vlog 快进或者倒退&#xff0c;还可以分享给别人做进一步的分析&#xff0c;是不是想都不敢想。很开心的是 windbg preview 版本中已经实现了&#xff0c;叫做 时间旅行调试 TTD&…

【神经网络】神经网络结构在命名实体识别(NER)中的应用

命名实体识别&#xff08;Named Entity Recognition&#xff0c;NER&#xff09;就是从一段自然语言文本中找出相关实体&#xff0c;并标注出其位置以及类型&#xff0c;如下图。它是NLP领域中一些复杂任务&#xff08;例如关系抽取&#xff0c;信息检索等&#xff09;的基础。…

[python opencv 计算机视觉零基础到实战] 十、图片效果毛玻璃

一、学习目标 了解高斯模糊的使用方法了解毛玻璃的图片效果添加了解如何自己做一个噪声图片 上一篇:[python opencv 计算机视觉零基础到实战] 九、模糊 如有错误欢迎指出~ 二、了解模糊与美颜 2.1 使用高斯模糊降噪 由于很多小伙伴反应抛开原理或理论讲解使用用法对于初学…

Android之自定义View实现带4圆角或者2圆角的效果

1 问题 实现任意view经过自定义带4圆角或者2圆角的效果 2 原理 1) 实现view 4圆角 我们只需要把左边的图嵌入到右边里面去,最终显示左边的图就行。 2) 实现view上2圆角 我们只需要把左边的图嵌入到右边里面去,最终显示左边的图就行。 安卓源码里面有这样的类 package and…

java trim()函数_Java - split()函数和trim()函数的使用方法

split()函数和trim()函数的使用方法本文地址: http://blog.csdn.net/caroline_wendy/article/details/24465141详细參考Java API: http://docs.oracle.com/javase/6/docs/api/java/lang/String.htmlsplit()函数是依据參数如",", "-", " "等, 切割…

分布式服务器集群架构方案思考

0x01.大型网站演化 简单说&#xff0c;分布式是以缩短单个任务的执行时间来提升效率的&#xff0c;而集群则是通过提高单位时间内执行的任务数来提升效率。 集群主要分为&#xff1a;高可用集群(High Availability Cluster)&#xff0c;负载均衡集群(Load Balance Cluster&…

交互式 .Net 容器版

1背景介绍 在之前的文章 - 交互式 .Net 中已经介绍了什么是 交互式 .Net&#xff0c;文中是通过 Visual Studio Code 插件的方式实现 交互式 .Net 的。现在&#xff0c;我们将使用容器的方式实现 交互式 .Net。2镜像构建 1. DockerfileFROM mcr.microsoft.com/dotn…

Java 集合练习——3

创建Map集合&#xff0c;创建Emp对象&#xff0c;并将创建的Emp对象添加到集合中&#xff0c;并将id为005的对象从集合中移除 创建Emp类&#xff1a; package jihe;public class Emp {private String id;public String getId() {return id;}public void setId(String id) {this…

[python opencv 计算机视觉零基础到实战] 十一找到图片中指定内容

一、学习目标 了解图片内容定位方法matchTemplate使用了解minMaxLoc方法使用 上一篇《[python opencv 计算机视觉零基础到实战] 十、图片效果毛玻璃》 如有错误欢迎指出~ 二、了解从一张图片中找到指定内容的方法 2.1 使用matchTemplate函数对图片中的指定内容进行查找 有…

Linq 实现 DataTable 行转列

前几天写了一篇sqlserver 行转列&#xff0c;http://www.cnblogs.com/li-peng/archive/2012/02/01/2334973.html 由于工作需要&#xff0c;要把查出来的DataTable实现 行转列&#xff0c; 正好这一阵子在用Linq 就做了一个行转列的小例 子 转换前的table: 转换后的table: 代码…

Android Studio之编译提示\app\src\main\res\values\colors.xml:1:1 Error:前言有不允许的内容

1 问题 Android Studio新建立的项目运行莫名其妙提示错误如下 app\src\main\res\values\colors.xml:1:1 Error:前言有不允许的内容 然后我把res目录下面的colors.xml文件打开看如下 <?xml version"1.0" encoding"utf-8"?> <resources>&l…

Hello Playwright:(3)基本概念

下面介绍一下 Playwright 中的基本概念&#xff1a;Headless 浏览器Playwright 需要特定版本的浏览器二进制文件才能运行。这些浏览器都支持 2 种 运行模式&#xff1a;Headless&#xff0c;无浏览器 UI&#xff0c;运行速度较快&#xff0c;常用于自动化运行Headed&#xff0c…

[python opencv 计算机视觉零基础到实战] 十二 直方图

一、学习目标 了解matplotlib绘图库的使用了解如何通过折线图或者直方图对图表进行绘制了解了通过图标对图片内容进行直观判断 如有错误欢迎指出~ 二、了解图像直方图及其应用 2.1 了解matplotlib库 在了解图像直方图前我们需要了解一个matplotlib库&#xff0c;matplotli…