深入浅出学Verilog--数字电路基础内容

news2024/9/24 11:22:30

什么是数字系统?

        数字系统是一种表示数值的方式。它是一组使我们能够计数、测量和计算数值量的规则、符号和过程。最常见的数字系统是使用数字 0-9 的十进制系统和仅使用 0 和 1 的二进制系统。其他数字系统包括八进制、十六进制和罗马数字。每个数字系统都有其独特的属性和应用范围,它们广泛地应用于数学、计算机科学、工程和物理等各个领域。

常用的数字系统

        数字系统有许多,最常见的一些是:

  • 十进制:以 10 为进位,这是日常生活中最常用的数字系统。它使用 10 个符号 (0-9) 和位置来表示数字。每个位置代表 10 的幂,因此数字的值取决于它在数字中的位置。例如,在数字123中,数字3代表个位,数字2代表十位,数字1则代表百位。
  • 二进制:以 2 为进位,这是计算机用来表示和操作数据的数字系统。它使用两个符号(0 和1)和位置来表示数字。每个位置代表 2 的幂,因此数字的值取决于它在数字中的位置。例如,在二进制数1101中,左1位置的数字1代表2^3(8),左2位置的数字1代表2^2(4),数字0代表2^1(2),最右侧的数字1代表2^0(1)。
  • 十六进制:以 16 为进位,这是计算机编程和数字电子学中常用的数字系统。它使用 16 个符号(0-9 和 A-F)和位置来表示数字。每个位置代表 16的幂,因此数字的值取决于它在数字中的位置。例如,十六进制数A7F中,数字F代表16^0(1),数字7代表16^1(16),数字A代表16^2(256)。

        此外,还有一些其他数字系统,例如在某些计算机编程应用中使用的八进制,以及古代西方用于计数和算术的罗马数字。

不同进制之间的转换方法

        接下来将示范几种不同进制之间转换的方法。

将十进制数转换为二进制数

        要将十进制数转换为二进制数,可以按照以下步骤操作:

  • 将十进制数除以 2
  • 写下整数商和余数
  • 对整数商重复该过程,直到商为 0
  • 以相反的顺序写出余数(最后一个余数成为第一个数字)

        例如,将十进制数 25 转换为二进制数:

  • 25 除以 2 是 12 余数 1。记下余数:1
  • 12 除以 2 是 6,余数为 0。记下余数:0
  • 6 除以 2 是 3,余数为 0。记下余数:0
  • 3 除以 2 等于 1,余数为 1。记下余数:1
  • 1 除以 2 为 0,余数为 1。记下余数:1

        倒序余数的组合为:11001。因此,十进制数25转为二进制为11001。

将十进制数转换为二进制数(小数)

        要将十进制小数转换为二进制小数,可以按照以下步骤操作:

  • 将小数乘以 2
  • 写下结果的整数部分作为下一个二进制数字
  • 如果小数部分不为0,则对小数部分重复该过程,直到小数部分变为0或达到所需的二进制位数
  • 按顺序写入二进制数字

        例如,我们将小数 0.625 转换为二进制:

  • 0.625 x 2 = 1.25。整数部分是1,所以记下:0.1
  • 0.25 x 2 = 0.5。整数部分为0,所以记下:0
  • 0.5 x 2 = 1.0。整数部分是1,所以记下:1

        所以,十进制数0.625的二进制表示为0.101。

将二进制数转换为十进制数

将二进制转换为十进制的示例要将二进制数转换为十进制数,可以按照以下步骤操作:

  • 写下二进制数
  • 从最右边的数字开始,为每个数字分配 2 的幂,最右边的数字为 2^0,下一个数字为 2^1,再下一个数字为2^2,依此类推
  • 将每个数字乘以相应的 2 次方
  • 将乘法结果相加即可得到等值的十进制数

        例如,将二进制数 11011 转换为十进制:

  • 写下二进制数:11011
  • 为每个数字分配 2 的幂:2^0、2^1、2^2、2^3、2^4
  • 将每个数字乘以相应的 2 次方:
  • 将结果相加:2^0*1+ 2^1*1 + 2^2*0 + 2^3*1 + 2^4*1 = 1 + 2 + 0 + 8 + 16 = 27

        因此,二进制数 11011 的十进制表示为 27。

将二进制数转换为十六进制数

        要将二进制数转换为十六进制数,可以按照以下步骤操作:

  • 将二进制数从最右边的数字开始分成 4 位数字组。若不足4位,则在左侧补0
  • 使用下表记下每个4 位二进制组的十六进制等效值:

        例如,将二进制数 10110110 转换为十六进制:

  • 将二进制数分成4位一组:1011_0110
  • 写下每个 4 位二进制组的十六进制等效值:1011 = B,0110 = 6

        因此,二进制数10110110转为十六进制就是B6。

将十六进制数转换为二进制数

        要将十六进制数转换为二进制数,可以按照以下步骤操作:

  • 写下十六进制数
  • 使用下表记下每个十六进制数字的二进制等效值:
  • 把所有的十六进制数字的二进制等值连起来

        

        例如,将十六进制数 D7 转换为二进制:

  • 写下十六进制数:D7
  • 写下每个十六进制数字的二进制等效值:D=1101,7 = 0111
  • 连接二进制数字:11010111

        因此,十六进制数D7换算成二进制就是11010111。

什么是BCD码?

        二进码十进数 (BCD码,Binary-Coded Decimal‎) 是数字电子和计算中表示十进制数的一种方法。在 BCD 码中,每个十进制数字都用四位二进制代码表示。例如,十进制数 123 用 BCD 码表示为:

0001 0010 0011   // 1 2 3

        第一位代表千位,第二位代表百位,第三位代表十位,第四位代表个位。BCD 码中的每个数字都独立于其他数字,这与二进制表示形式不同,二进制表示中每个位的值取决于其位置。这使得 BCD 成为设计十进制算术电路时易于使用的格式。

        BCD码常用于需要显示或处理十进制数字的电子设备,例如计算器、数字时钟和测量设备等。因为BCD码比其他二进制编码形式需要更多的内存和处理能力,因此一般只在需要使用十进制算术的地方使用。

无符号数与有符号数

        在数字设计中,无符号数(Unsigned Binary)是仅表示大小而不表示正负的二进制数。它使用固定数量的位数来表示一系列非负数。无符号数可以表示的数字范围始终为正(包括 0)。在无符号数系统中,所有的位都用于表示数字大小。

        例如,8 位无符号数可以表示的范围为 0 ~255(即2^8 - 1 )。在 8 位无符号数系统中,数字 10 的二进制表示形式为 0000_1010。请注意,这种方法没有哪位是用来表示正负的。例如,二进制数 1010 表示无符号二进制系统中的十进制数 10,最左边的位既不表示正负,也不表示是负数。

0000 0000 = 0
0000 0001 = 1
0000 0010 = 2
...
1111 1110 = 254
1111 1111 = 255

        无符号数通常用于只需要正数的数字系统,例如计数器、定时器和地址寄存器等。它们还可用于表示不能为负数的物理量,例如距离或温度等。

        有符号数(Signed Binary)是表示大小和正负的二进制数。它使用固定数量的位数来表示正负和正数的范围。

        例如,在 8 位有符号数字系统中,可以表示的值范围 -128 到 127。数字 -10 的二进制补码表示形式为 1_111_0110 ,其中最左边的位表示该数字为负数,其余位表示该数字的大小(在本例中,大小为 10)。

0000 0000 = 0
0000 0000 = 1
0000 0010 = 2
...
0111 1111 = 127
1000 0000 = -128
1000 0001 = -127
...
1111 1110 = -2
1111 1111 = -1

        请注意,二进制数的最左边位表示数字的符号----0 表示正数,1 表示负数。其余位表示数字的大小。

        例如,有符号的二进制数 11010101 使用二进制数的补码表示十进制数 -43,因为最左边的位是 1,而该数的大小为 010101,等于十进制数 21。

        有符号二进制数提供了一种更全面的数字表示方式,因为它们可以同时表示正数和负数。

        如何将有符号的二进制数转化为十进制数?

        最高有效位(MSB)用作符号位,其中0代表正,1代表负。其余位表示数字的大小或绝对值。例如,假设想要使用 8 位有符号数形式表示十进制数 -46。46 在二进制中的绝对值为 00101110。为了表示-46,我们将 MSB 设置为 1,表示负数,从而得到有符号大小的二进制表示形式 10101110。

        以下是将带符号的二进制数转换为十进制数的方法:

  1. 检查 MSB 位。如果为0,则该数字为正数,我们可以通过将每个位的权重与其值相乘并将结果相加来求出其值。
  2. 如果是 1,则该数字为负数,我们将剩余位中的所有位反转(将 1 变为 0,将 0 变为 1)。
  3. 然后,我们找到反转的二进制数的十进制值,并在其上添加一个负号。

        

例如,让我们将带符号的二进制数 11011010 转换为十进制:

  1. MSB 为 1,因此该数为负数。
  2. 将剩余位反转得到 00100101。
  3. 通过将每一位的权重乘以它的值,将结果相加,找到反转的二进制数的十进制值。得出 1 x 32 + 0 x 16 + 0 x 8 + 1 x4 + 0 x 2 + 1 x 1 = 37。
  4. 在结果中添加一个负号,得到-37。

        因此,有符号大小的二进制数 11011010 等于十进制的 -37。


  • 📣您有任何问题,都可以在评论区和我交流📃!
  • 📣本文由 孤独的单刀 原创,首发于CSDN平台🐵,博客主页:wuzhikai.blog.csdn.net
  • 📣您的支持是我持续创作的最大动力!如果本文对您有帮助,还请多多点赞👍、评论💬和收藏⭐!

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

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

相关文章

URL 路径中包含百分号需要在 Swift 中的特殊处理

概览 在 Swift 中访问或处理 URL 路径常常遇见路径中包含百分号(%)的情况,此时我们有必要做特殊处理,否则 URL 的请求和解析可能会发生错误。 如果 URL 路径中包含用百分号前缀表示的特殊字符,在之后的路径解析中可能会出现意想不到的问题。 在本篇博文中,您将学到以下…

数字展厅如何设计与策划,一文了解搭建数字展厅要哪些步骤

引言: 数字展厅,作为一种现代化的宣传工具,已经在商业界崭露头角。我们将了解什么是数字展厅,然后探讨数字展厅设计的关键要素,接着讲述数字展厅策划的核心原则,最后详细介绍数字展厅的搭建过程。 一&…

C# OpenVino Yolov8 Cls 分类

效果 项目 代码 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using OpenCvSharp;namespace OpenVino_Yolov8_Demo {public…

GMS地下水数值模拟及溶质(包含反应性溶质)运移模拟技术教程

详情点击公众号链接:GMS地下水数值模拟及溶质(包含反应性溶质)运移模拟技术教程 前言 GMS三维地质结构建模 GMS地下水流数值模拟 GMS溶质运移数值模拟与反应性溶质运移模 第一地下水数值模拟理论模块 1.1 地下水渗流运动方程 1.2 地下水数…

docker启动前端

docker启动前端 作为一个前端,代码写完,最后部署到服务器,这是一个必须要了解的过程,今天,我就在docker 中安装nginx 并部署做一个简单的笔记。 首先我在某云中有个云服务器,并登陆 前言 提示&#xff1…

【2023研电赛】西北赛区二等奖:单链全导联便携式心脏健康监测系统

本文为2023年第十八届中国研究生电子设计竞赛技术竞赛类西北赛区二等奖分享,参加极术社区的【有奖活动】分享2023研电赛作品扩大影响力,更有丰富电子礼品等你来领!,分享2023研电赛作品扩大影响力,更有丰富电子礼品等你…

SQL性能优化

当你的数据里只有几千几万,那么 SQL 优化并不会发挥太大价值,但当你的数据里去到了几百上千万,SQL 优化的价值就体现出来了!因此稍微有些经验的同学都知道,怎么让 MySQL 查询语句又快又好是一件很重要的事情。要让 SQL…

Opencv 4.5.5 linux contrib编译

https://github.com/opencv/opencv/releases https://github.com/opencv/opencv_contrib/releases/tag/4.7.0 版本要一模一样 下载4.5.5的源码 # 0. 将contrib文件夹移动到opencv文件夹中去 mkdir build cd build# 1. cmake生成配置文件,其中OPENCV_EXTRA_MODUL…

内网桌面如何让外网电脑连接?快解析内网映射域名设置

异地电脑远程桌面连接局域网服务器需求场景时,大多人会想到在目标本地的路由器上做端口映射设置。其实路由映射方法只适用于有公网IP的网络环境。当所在联网环境下是内部网络,内网环境下无公网IP或无公网IP权限时,路由映射方法就不生效了&…

【谢希尔 计算机网络】第2章 物理层

目录 通信基础 基本概念 两个公式lim 奈氏准则 香农定理 奈氏准则 VS 香农定理 编码与调制 ​编辑 物理层下面的传输媒体 导引型传输媒体 1. 双绞线 2. 同轴电缆 3. 光缆 非导引型传输媒体 无线电微波通信 卫星通信 无线局域网使用的 ISM 频段 信道复用技术 …

RS485总线浪涌解决方案!|深圳比创达EMC

在各种通讯方式当中,RS485总线是较为常见的一种,因其接口简单、系统运行稳定和通讯速率高等特点被广泛应用。但由于RS485总线一般传输距离较长,且经常暴露在外,所以非常容易受到电磁干扰,而浪涌干扰已经成为485通信使用…

【漏洞复现】广联达OA漏洞合集(信息泄露+SQL注入+文件上传)

文章目录 声明广联达OA存在信息泄露一、漏洞概述二、漏洞复现三、修复建议广联达Linkworks办公OA SQL注入漏洞后台文件上传漏洞一、产品简介二、漏洞概述三、复现环境四、修复建议 声明 请勿利用文章内的相关技术从事非法测试,由于传播、利用此文所提供的信息或者工…

无涯教程-JavaScript - MOD函数

描述 MOD函数返回数字除以除数后的余数。输出与除数的符号相同。 语法 MOD (number, divisor)争论 Argument描述Required/OptionalNumberThe number for which you want to find the remainder.RequiredDivisorThe number by which you want to divide number.Required No…

Spring注解 bean基础

一、Spring注解 bean扫描与注入 <dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>4.3.12.RELEASE</version></dependency>1. 组件注册Configuration和Bean的注入 1&…

FPGA计数器边界问题解析

FPGA计数器边界问题解析 一次作者在处理AMBE2000数据接收过程中&#xff0c;遇到一个问题&#xff0c;对该计数器边界总是模糊不清。现在予以说明&#xff0c;以警示以后工作时书写错误代码。 AMBE2000数据一旦准备好后&#xff0c;一次会输出24个字&#xff0c;其中第1个字0x…

swift 问答app

结构体 mvc模式 不变性 试一试

Hbuilder本地调试微信H5项目(一)

摘要 通过内网穿透&#xff0c;访问本地Hbuilder创建的Vue项目 前置准备 下载并安装【HBuilder】&#xff0c;本文用的是HBuilder3.8.12版本&#xff0c;下载地址 下载并安装【微信开发者工具】&#xff0c;本文用的是1.06版本&#xff0c;下载地址 下载并安装【natapp】&a…

JMeter压测工具介绍、安装及汉化教程,详解安装目录结构

&#x1f9d1;‍&#x1f4bb;作者名称&#xff1a;DaenCode &#x1f3a4;作者简介&#xff1a;CSDN实力新星&#xff0c;后端开发两年经验&#xff0c;曾担任甲方技术代表&#xff0c;业余独自创办智源恩创网络科技工作室。会点点Java相关技术栈、帆软报表、低代码平台快速开…

使用VMware 16 安装中标麒麟 7 --九五小庞

1、下载中标麒麟7 百度网盘&#xff1a; 百度网盘 请输入提取码 百度网盘为您提供文件的网络备份、同步和分享服务。空间大、速度快、安全稳固&#xff0c;支持教育网加速&#xff0c;支持手机端。注册使用百度网盘即可享受免费存储空间 https://pan.baidu.com/s/1LlmRzKHTF-NR…

为什么Python赢了,别的语言都干嘛去了?

人工智能时代&#xff0c;为什么Python大放异彩&#xff0c;别的语言都干嘛去了&#xff1f; 为什么不是使用者众多的Java&#xff1f;也许是Java啰里啰唆&#xff0c;不如Python那么简洁&#xff1f; 为什么不是Ruby&#xff1f; 和Python一样简洁&#xff0c;但是更加优雅。…