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

本文详细介绍了数字系统的基本概念,包括十进制、二进制、十六进制等,展示了不同进制间的转换方法,如十进制转二进制、BCD码的表示以及无符号数与有符号数的区别。
摘要由CSDN通过智能技术生成

文章已获作者授权转载,版权归原作者所有,如有侵权,与本账号无关,可联系删除。 原文作者:单刀FPGA

什么是数字系统?

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

常用的数字系统

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

  • **十进制:**以 10 为进位,这是日常生活中最常用的数字系统。它使用 10 个符号 (0-9) 和位置来表示数字。每个位置代表 10 的幂,因此数字的值取决于它在数字中的位置。例如,在数字123中,数字3代表个位,数字2代表十位,数字1则代表百位。
  • **二进制:**以 2 为进位,这是计算机用来表示和操作数据的数字系统。它使用两个符号(0 和1)和位置来表示数字。每个位置代表 2 的幂,因此数字的值取决于它在数字中的位置。例如,在二进制数1101中,左1位置的数字1代表23(8),左2位置的数字1代表22(4),数字0代表21(2),最右侧的数字1代表20(1)。
  • **十六进制:**以 16 为进位,这是计算机编程和数字电子学中常用的数字系统。它使用 16 个符号(0-9 和 A-F)和位置来表示数字。每个位置代表 16的幂,因此数字的值取决于它在数字中的位置。例如,十六进制数A7F中,数字F代表160(1),数字7代表161(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,下一个数字为 21,再下一个数字为22,依此类推
  • 将每个数字乘以相应的 2 次方
  • 将乘法结果相加即可得到等值的十进制数

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

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

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

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

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

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

img

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

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

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

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

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

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

img

​ 例如,将十六进制数 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。

原文链接:https://wuzhikai.blog.csdn.net/article/details/132890267

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值