chapter1_数制和码制

news2024/11/27 17:55:58

文章目录

      • 1.简介
      • 2.常用的数制
        • 2.1 十进制
        • 2.2 二进制
        • 2.3 八进制
        • 2.4 十六进制
      • 3.不同进制之间的转换
        • 3.1 二—十进制
        • 3.2 十—二进制
        • 3.3 十六—二进制
        • 3.4 二—十六进制
        • 3.5 八进制数与二进制数的转换
        • 3.6 十六进制数与十进制数的转换
      • 4.二进制算数运算
        • 4.1 反码、补码和补码运算
      • 5.几种常用的编码
        • 5.1 BCD码(8421码)
        • 5.2 余3码
        • 5.3 2421码和5211码
        • 5.4 格雷码(Gray Code)
        • 5.5 美国信息交换标准代码(ASCII)

1.简介

数字信号

某物理量在时间上的变化是不连续的,变化的数值大小和每次增减的变化都是某一个最小数量单位的整数倍,小于这个歌最小数量单位没有任何物意义。我们把这一类物理量成为数字量,而表示数字量的信号称为数字信号

模拟信号

物理量的变化在时间上或树枝上则是连续的。我们把这类物理量称为模拟量,把表示模拟量的信号称为模拟信号

2.常用的数制

2.1 十进制

在十进制中,每个位有0-9个数码,所以计数的基数是10。超过9的数必须用多位数表示,其中低位和相邻高位之间的关系是“逢十进一”,故称为十进制。
D = ∑ k i × 1 0 i D = \sum k_i \times 10^{i} D=ki×10i

2.2 二进制

目前在数字电路中应用最广泛的是二进制。在二进制数中每一位仅有0和1两个可能的数码,所以计数基数为2低位和相高位间的进位关系是“逢
二进一”,故称为二进制。
D = ∑ k i 2 i D = \sum k_{i} 2^{i} D=ki2i

2.3 八进制

八进制数的每一位有 0~7 八个不同的数码,计数的基数为8。低位和相邻的高位之间的进位关系是“逢八进一”。任意个八进制数可以按十进制数展开为
D = ∑ k i 8 i D = \sum k_{i}8^{i} D=ki8i

2.4 十六进制

十六进制数的每一位有十六个不同的数码,分别用0~9、A(10)、B(11)、C(12)、D(13)、E(14)、F(15)表示。因此,任意一个十六进制数均可展开为
D = ∑ k i 1 6 i D = \sum k_i 16^i D=ki16i
不同进制对照表:

在这里插入图片描述

3.不同进制之间的转换

3.1 二—十进制

( 1011.01 ) 2 = 1 × 2 3 + 1 × 2 1 + 1 × 2 0 + 0 × 2 − 1 + 1 × 2 − 2 = ( 11.25 ) 10 (1011.01)_{2} = 1\times2^3 + 1\times2^1+1\times2^0+0\times2^{-1}+1\times2^{-2}=(11.25)_{10} (1011.01)2=1×23+1×21+1×20+0×21+1×22=(11.25)10

3.2 十—二进制

假设十进制 ( S ) 10 (S)_{10} (S)10和二进制数数为 ( k n k n − 1 . . . k 0 ) (k_nk_{n-1}...k_0) (knkn1...k0),则可知等式:
( S ) 10 = k n 2 n + k n − 1 2 n − 1 + . . . + k 1 2 1 + k 0 2 0 = 2 ( k n 2 n − 1 + k n − 1 2 n − 2 + . . . + k 1 ) + k 0 \begin{align} (S)_{10} = k_n2^n+k_{n-1}2^{n-1}+...+k_12^1+k_02^0\newline =2(k_n2^{n-1}+k_{n-1}2^{n-2}+...+k1)+k0 \end{align} (S)10=kn2n+kn12n1+...+k121+k020=2(kn2n1+kn12n2+...+k1)+k0
上述公式表明,若将 ( S ) 10 (S)_{10} (S)10除以2,那么商就是 k n 2 n − 1 + k n − 1 2 n − 2 + . . . + k 1 k_n2^{n-1}+k_{n-1}2^{n-2}+...+k1 kn2n1+kn12n2+...+k1,余数就是 k 0 k_0 k0。同理可以把得到的商在除以2,余数即为k1:
k n 2 n − 1 + k n − 1 2 n − 2 + . . . + k 1 = 2 ( k n 2 n − 2 + k n − 1 2 n − 3 + . . . + k 2 ) + k 1 \begin{align} k_n2^{n-1}+k_{n-1}2^{n-2}+...+k1=2(k_n2^{n-2}+k_{n-1}2^{n-3}+...+k_2)+k1 \end{align} kn2n1+kn12n2+...+k1=2(kn2n2+kn12n3+...+k2)+k1
依次类推,反复将每次得到的商再除以2,则所得余数为 k i k_i ki.

例如,将 ( 173 ) 10 (173)_{10} 17310化为二进制数可以进行如下运算,得到的结果 ( 173 ) 10 = ( 10101101 ) 2 (173)_{10} = (10101101)_2 17310=(10101101)2

在这里插入图片描述

上面是整数的转换方式,而小数的转换方式,是该是怎么样的呢?

同理,参考上面,我们可以假设 ( S ) 10 (S)_{10} (S)10是 一个十进制的小数,那么与之相等的二进制的系数 k − 1 k − 2 . . . k − m k_{-1}k_{-2}...k_{-m} k1k2...km,则可得:
( S ) 10 = k − 1 2 − 1 + k − 2 2 − 2 + . . . + k − m 2 − m \begin{align} (S)_{10} = k_{-1}2^{-1}+k_{-2}2^{-2}+...+k_{-m}2^{-m} \end{align} (S)10=k121+k222+...+km2m
两边同时乘2,所得到的整数部分即为 k 1 k_1 k1
2 ( S ) 10 = 2 ( k − 1 2 − 1 + k − 2 2 − 2 + . . . + k − m 2 − m ) = k − 1 + k − 2 2 − 1 + . . . + k − m 2 − m + 1 \begin{align} 2(S)_{10} = 2(k_{-1}2^{-1}+k_{-2}2^{-2}+...+k_{-m}2^{-m})\newline =k_{-1}+k_{-2}2^{-1}+...+k_{-m}2^{-m+1} \end{align} 2(S)10=2(k121+k222+...+km2m)=k1+k221+...+km2m+1
同理两边同时乘2,所得到的整数为 k 2 k_{2} k2,即乘积的整数部分就是 k − 2 k_{-2} k2:
2 ( k − 2 2 − 1 + . . . + k − m 2 − m + 1 ) = k − 2 + k − 3 2 − 2 . . . + k − m 2 − m + 2 \begin{align} 2(k_{-2}2^{-1}+...+k_{-m}2^{-m+1})\\ = k_{-2}+k_{-3}2^{-2}...+k_{-m}2^{-m+2} \end{align} 2(k221+...+km2m+1)=k2+k322...+km2m+2
综上,每次乘2后所得整数部分最高位,小数部分乘2,是小数次高位,依次类推,就可以求出二进制小数的每一位。

例如将 ( 0.815 ) 10 (0.815)_{10} (0.815)10转为2进制,如下所示, ( 0.815 ) 10 = ( 0.1101 ) 2 (0.815)_{10} = (0.1101)_2 (0.815)10=(0.1101)2
在这里插入图片描述

3.3 十六—二进制

十六 -二转换是指将十六进制数转换为等值的二进制数。转换时只需将十六进制数的每一位用等值的4 位二进制数代替就行了。

例如,将(01011110.10110010)化为十六进制数时可得:

在这里插入图片描述

3.4 二—十六进制

转换是指将十六进制数转换为等值的二进制数。转换时只需将十六进制数的每一位用等值的4 位二进制数代替就行了。

例如,将(8FA.C6)化为二进制数时得到:

在这里插入图片描述

3.5 八进制数与二进制数的转换

在将二进制数转换为八进制数时,只要将二进制数的整数部分从低位到高位每3 位分为一组并代之以等值的八进制数,同时将小数部分从高位到低位每
位分为一组并代之以等值的八进制数就可以了。

例如,若将( 011110.010111),化为八进制数,则得到:

在这里插入图片描述

反之,若将八进制数转换为二进制数,则只要将八进制数的每一位代之以等值的二进制数即可。例如,将(52.43)。转换为二进制数时,得到

在这里插入图片描述

3.6 十六进制数与十进制数的转换

在将十六进制数转换为十进制数时,可根据下面的公式将各位按权展开后相加求得。

在将十进制数转换为十六进制数时,可以先转换为二进制数,然后再将得到的二进制数转换为等值的十六进制数。
D = ∑ k i 1 6 i D = \sum k_i 16^i D=ki16i

4.二进制算数运算

当两个二进制数码表示两个数量大小时,它们之间可以进行数值运算,这种运算称为算术运算。二进制算术运算和十进制算术运算的规则基本相同,唯一的区别在于二进制数是“逢二进一”而不是十进制数的“逢十进一“。

例如,两个二进制数1001和0101的算术运算有

在这里插入图片描述

如果我们再能设法将减法操作转化为某种形式的加法操作,那么加、减、乘、除运算就全部可以用“移位”和“相加”两种操作实现了。利用上述特点能使运算电路的结构大为简化。

4.1 反码、补码和补码运算

原码:在二进制前面加上1位符号位,符号位0表示这个数是正数,符号1表示这个数是负数。这种形式的数就是原码。

在做减法时,首先要比较两个数的绝对值,然后以最大数为被减数,绝对值小的作为减数,作差,得到的结果以绝对值最大的数的符号作为差值的符号;

为了让减法变的简单,能让加法代替减法么?举个例子,当现在的时间是5点,但手表确显示10点,那怎么调回5点呢?两种方法:
10 − 5 = 5 10 + 7 = 17 − 12 = 5 \begin{align} 10 - 5 = 5 \newline 10 + 7 = 17-12=5 \end{align} 105=510+7=1712=5
由上可知,7就是-5关于12的补码。在舍弃进位的情况下,减去某个数,可以用加上他的补码来代替。再比如,1011-0111= 0100的减法运算,可以用1011+1001=0100的加法来代替。因为4位二进制的进位基数是16(10000),所以1001(9)恰好是0111(7)对模16的补码。

基于上述原理,对于有效数字(不包括符号位)为n位的二进制数,它的补码 ( N ) C O M P (N)_{COMP} N)COMP表示方法为:
( N ) C O M P = { 2 n − N ( 当 N 为负数 ) N ( 当 N 为正数 ) (N)_{COMP} = {\{^{N\quad(当N为正数)}_{2^{n}-N\quad(当N为负数)}} (N)COMP={2nN(N为负数)N(N为正数)
正数的补码等于原码,负数(当符号位为1)的补码等于 2 n − N 2^n-N 2nN。为了避免在求补码的过程中做减法,通常是先求出N的反码 ( N ) I N V (N)_{INV} (N)INV,然后在反码的基础上加1得到补码。反码的定义如下:
N I N V = { N ( 当 N 为正数 ) ( 2 n − 1 ) − N ( 当 N 为负数 ) N_{INV} = \left\{ \begin{align} N\quad (当N为正数)\\ (2^n - 1)-N\quad(当N为负数) \end{align} \right. NINV={N(N为正数)(2n1)N(N为负数)
由上式可知,当N为负数时, N + ( N ) N V I = 2 n − 1 N+(N)_{NVI} = 2^n -1 N+(N)NVI=2n1,而 2 n − 1 2^n-1 2n1是n位全为1的数,也就说,N和N的反码加起来全为1(当N为负数)。所以反码的求法就出来了:只需要把N中的每一位0变1,1变0,就得到了反码 N I N V N_{INV} NINV

当N为负数时, N I N V + 1 = 2 n − N N_{INV}+1 = 2^n - N NINV+1=2nN,而在上面中,当N为负数时, ( N ) C O M P = 2 n − N (N)_{COMP} = 2^n - N (N)COMP=2nN,综上可得:
N I N V + 1 = N C O M P N_{INV} + 1 = N_{COMP} NINV+1=NCOMP
即,二进制的负数的补码等于它的反码加1

例子:写出带符号位二进制数00011010(+26)、10011010(-26)、00101101(+45)和10101101(-45)的反码和补码:

原码反码补码
000110100001101000011010
100110101110010111100110
001011010010110100101101
101011011101001011010011

5.几种常用的编码

为了用二进制代码表示十进制的0-9的十个状态,二进制代码只要需要4bit,而4bit的二进制表示范围在(0000-1111),有16个状态。那具体取哪10个状态来表示0~9,有许多方案,如下:
在这里插入图片描述

5.1 BCD码(8421码)

8421码又称BCD(Binary Coded Decimal)码,是十进制代码中最常见的代码之一。在BCD码中,从左到右的每一位1分别表示8、4、2、1,所以也称为8421码;每一位的1代表的十进制数称为这一位的权,8421码中每一位的权重是固定不变的,所以属于恒权编码。

注意8421码和普通二进制码的区别:

  1. 8421码
    • 用于表示十进制数字,每个数字的表示固定为4位二进制
    • 主要用于数字显示和某些计算机系统中需要表示二进制数字的场景
  2. 普通二进制码
    • 用于表示任何整数,位宽根据需要而定
    • 更加灵活,可以表示任何范围的整数

举例说明:要表示十进制“12",普通二进制是0110,而8421码s是将1和2分开表示,即”0001 0010“.

5.2 余3码

余3码的编码规则与BCD码不同,如果把每一个余3码看做4位二进制数,则它的数值要比它所表示的十进制数码多3,故而将这种代码称为余3码

如果将两个余3码相加,所得的和将比十进制数和所对应的二进制多6。因此在使用余3码做加法运算时,若两数之和为10,正好等于二进制的16,于是便从高位自动产生进位信号。

此外,从上面表中可以看出,0和9、1和8、2和7、3和6、4和5的余3码互为反码,这对于求取10的补码是更方便的,这就是余3码的反码性质。在求取十进制数的10的补码时,可以先求取该数的9的补码,再加1。

对于任何十进制数x,求其10的补码的步骤如下:

  1. 求该数的余3码
  2. 求其反码(即找到余3码的互补对)
  3. 将反码加1

实例,我们要计算十进制数610的补码

  1. 十进制数6的余3码是1001
  2. 6的反码是3的余3码,即0110
  3. 将反码0110加1得到0111
  4. 0111是十进制数4的余3码。

因此,6的10的补码是4。通过利用余3码的反码性质,可以方便地求取10的补码。这种方法比直接用二进制或BCD(十进制编码)的方式更直观和简洁。

余 3 循环码是一种变权码每一位的1在不同代码中并不代表固定的数值。它的主要特点是相邻的两个代码之间仅有一位的状态不同。

5.3 2421码和5211码

2421 码是一种恒权代码,它的0和91和82和73 和64和5也为反码,这个特点和余3 码相仿。

5211 码是另一种恒权代码。待学了第六章中计数器的分频作用后可以发现,如果按 8421 码接成进制计数器则连续输入计数脉冲时,4 个触发器输出脉冲对于计数脉冲的分频比从低位到高位依次为 5:2:1:1。可见5211 码每位的权正好与8421 码十进制计数器 4 个触发器输出脉冲的分频比相对应。这种对应关系在构成某些数字系统时很有用。

5.4 格雷码(Gray Code)

格雷码(Gray Code)又称循环码,从表中可以看出格雷码的构成方法:格雷码的每一位的状态变化都是按照一定的顺序循环。例如,从0000开始

在这里插入图片描述

  • 最右边一位的状态按照0110顺序变化
  • 右边第二位的状态按照001111100顺序变化
  • 右边第三位的状态按照0000111111110000顺序变化

可见规律,从右向左,每一位状态循环中连续的0、1数目增加一倍。由于4位格雷码只有16个,所以坐左边的状态只有半个循环,即:

  • 右边第四位的状态按照0000000011111111顺序变化

格雷码优点

格雷码按照编码顺序依次变化时,相邻两个代码之间只有一位发生变化。这样在代码转换工程中就不会产生过渡“噪声”。

那普通的二进制码怎么会产生过渡噪声呢

比如上面图中第四行普通二进制编码转换为第五行编码“0011”->“0100”,如果最右边一位的变化比其他两位慢,就会出现一个瞬时的“0101”桩体,这个状态将会成为转换为过程中出现的噪声。而第四行的格雷码“0010”转换为第五行编码“0110“过程中因为只有1位发生变化就不会出现过渡噪声。

十进制代码中的余3循环码就是取4位格雷码中的十个代码组成的,因此它仍然具有格雷码的优点,即两个相邻的编码之间仅有1位不同。

5.5 美国信息交换标准代码(ASCII)

美国信息交换标准代码(American Standard Code for Information Interchange,简称ASCII码)是由美国国家标准协会(ANSI)制定的一种信息代码广泛地用于计算机和通信领域中。

ASCII编码是由一组7位二进制代码 ( b 7 b 6 b 5 b 4 b 3 b 2 b 1 ) (b_7b_6b_5b_4b_3b_2b_1) (b7b6b5b4b3b2b1),共128个,其中包括表示0-9的十个代码,表示大小写英文字母的52个代码,32个表示各种符号的代码以及34个控制代码。具体代码如下所示:

在这里插入图片描述
而ASCII码对应34个控制代码的具体含义如下:

在这里插入图片描述

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

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

相关文章

源代码一定要加密!10款超级好用的源代码加密软件排行榜

在当今高度竞争的商业环境中,源代码不仅是软件产品的基础,更是企业的核心资产之一。保护源代码免受未经授权的访问和盗窃至关重要。为此,许多企业采用源代码加密软件来为这一重要资产增加额外的安全层。以下是2024年企业通用的十大源代码加密…

普通高校普通教师如何应对智能时代的冲击

前篇 艰难求生的转型之路-CSDN博客 背景 增量发展阶段,大部分人生活随着个人努力都会出现改善; 存量博弈阶段,大部分人,不展开,求生欲。 增量→“蛋糕”越来越大; 存量→“蛋糕”(*^_^*)凸(艹皿艹 ) …

探索Python的自动化魔法:AutoIt库揭秘

文章目录 探索Python的自动化魔法:AutoIt库揭秘第一部分:背景介绍第二部分:AutoIt是什么?第三部分:如何安装AutoIt库?第四部分:AutoIt的五个简单函数第五部分:场景应用第六部分&…

最新盘点!18款2024年热门的项目管理系统软件!

项目管理是指在项目活动中运用专门的知识、技能、工具和方法,使项目能够在有限资源限定条件下,实现或超过设定的需求和期望的过程。 简单来说,项目管理系统就像是交响音乐会指挥手中的乐谱,能为项目经理清晰地呈现出项目的各个音符…

Web Worker 应用场景和实现

应用场景 众所周知JavaScript是单线程的语言,所有任务只能在一个线程上完成,一次只能做一件事,即前面的任务还没有完成,后面的任务只能排队等待。如果前面的任务需要执行一些大数据量的计算,页面就会出现卡顿、点击无反…

平衡二叉树、B树、B+树、红黑树解析

目录 有序二叉树平衡二叉树构造平衡二叉树RRLLRLLR 平衡二叉树的优缺点: 2-3-4树红黑树B树B树B树、B树、红黑树的应用 有序二叉树 关于有序二叉树的详解以及 J a v a Java Java代码实现详见:二叉排序树详解并通过Java代码实现。每个节点最多有两个孩子…

后端开发刷题 | 合并k个已排序的链表

描述 合并 k 个升序的链表并将结果作为一个升序的链表返回其头节点。 数据范围&#xff1a;节点总数 0≤n≤5000&#xff0c;每个节点的val满足 ∣val∣<1000 要求&#xff1a;时间复杂度 O(nlogn) 示例1 输入&#xff1a; [{1,2,3},{4,5,6,7}] 返回值&#xff1a; …

电机foc学习渠道已开放,欢迎各位加入

凌鸥学园旨在为电机控制爱好者提供学习交流成长平台&#xff0c;缓解电控行业人才缺口扩大趋势&#xff0c;共同打造繁荣行业生态。我们将全面整合LKS MCU相关资料&#xff0c;包括开发环境、应用笔记、教学视频、学习指导等&#xff0c;并设有专业课程。 课程图&#xff1a; 除…

程序统计访问用户与百度统计访问用户相差很大-User-Agent访问列表

一、程序统计访问用户与百度统计访问用户相差很大-User-Agent访问列表 1. 站里某天的User-Agent数据日志情况 本站里某天的User-Agent数据如下列表&#xff0c;占用量最大的就是前四项&#xff0c;后面的各项数量都很少可忽略&#xff0c;因网站的程序统计访问用户数和百度统计…

Cobalt Strike 4.8 用户指南-第二节-用户界面

2.1、概述 Cobalt Strike用户界面分为两部分。界面顶部显示会话或目标的可视化。界面底部显示与你交互的每个 Cobalt Strike 功能或会话的选项卡。可以单击这两个部分之间的区域并根据自己的喜好调整它们的大小。 # 2.2、工具栏 顶部的工具栏提供对常见 Cobalt Strike功能的快…

车规级MCU「换道」竞赛

汽车芯片&#xff0c;尤其是MCU市场正在进入拐点期。 本周&#xff0c;总部位于荷兰的汽车芯片制造商—恩智浦&#xff08;NXP&#xff09;半导体总裁兼首席执行官Kurt Sievers在公司第二季度财报电话会议上告诉投资者&#xff0c;由于汽车需求停滞不前&#xff0c;该公司正在努…

一元四次方程求解-【附MATLAB代码】

目录 前言 求解方法 MATLAB验证 附&#xff1a;一元四次方程的故事 前言 最近在研究机器人的干涉&#xff08;碰撞&#xff09;检测&#xff0c;遇到了一个问题&#xff0c;就是在求椭圆到原点的最短距离时&#xff0c;构建的方程是一个一元四次方程。无论是高中的初等数学…

pip出问题了,重装,获取python3.7 get-pip.py

下载脚本&#xff0c;对应版本 curl https://bootstrap.pypa.io/pip/3.7/get-pip.py -o get-pip.py https://bootstrap.pypa.io/pip/3.7/get-pip.py 安装 python get-pip.py windows下默认没有cur.exe 下载地址&#xff1a;通过百度网盘分享的文件&#xff1a;curl_windows…

论文翻译:Universal and Transferable Adversarial Attacks on Aligned Language Models

Universal and Transferable Adversarial Attacks on Aligned Language Models https://arxiv.org/pdf/2307.15043v2 通用且可转移的对抗性攻击对齐语言模型 文章目录 通用且可转移的对抗性攻击对齐语言模型摘要1 引言2 一个针对LLMs的通用攻击2.1 产生肯定回应2.2 贪婪坐标梯…

vue3 安装element-plus进行一些简单的测试

1、安装element-plus 官网地址&#xff1a;https://element-plus.org/zh-CN/guide/installation.html 2、安装方法&#xff1a; # 选择一个你喜欢的包管理器# NPM npm install element-plus --save# Yarn yarn add element-plus# pnpm pnpm install element-plus 这里我选择…

嵌入式AI快速入门课程-K510篇 (第二篇 Ubuntu的基础操作)

第二篇 Ubuntu的基础操作 文章目录 第二篇 Ubuntu的基础操作1. 安装 VMware 运行 Ubuntu1.1 安装 VMware 1.2 使用VMware打开Ubuntu1.2.1 下载、解压Ubuntu映像文件1.2.1 在BIOS上启动虚拟化(virtualization)1.1.1 使用VMware运行Ubuntu 2.第1章 Ubuntu操作入门1.1 Ubuntu下打开…

Vmware虚拟机接入物理机路由器网络

网络适配器增加至两个&#xff0c;一个选NAT, 另一个选host-only,再加一个桥接&#xff0c;不勾选使用物理网卡&#xff0c;然后重启即可&#xff01;

数据结构--图(Graph)

定义 图&#xff08;Graph&#xff09;是由顶点的有穷非空集合和顶点之间边的集合组成的一种非线性表结构&#xff0c;通常表示为&#xff1a;G(V,E)&#xff0c;其中&#xff0c;G表示一个图&#xff0c;V是图G中顶点的集合&#xff0c;E是图G中边的集合。 顶点&#xff08;…

three.js实现 加载3dtiles ,瓦片 ,倾斜摄影,功能

预览&#xff1a;https://z2586300277.github.io/three-cesium-examples/#/codeMirror?navigationThreeJS&classifyexpand&idloadTiles 部署站点预览&#xff1a;http://threehub.cn/ 开源地址&#xff1a;https://z2586300277.github.io/three-cesium-examples/#/e…

mp3和mp4的区别是什么?怎么把mp3转成mp4?(全)

在生活中我们或多或少会听到“mp3”和“mp4”&#xff0c;那么什么是mp3和mp4呢&#xff1f;mp3和mp4的区别是什么&#xff1f;mp3是一种音频压缩技术&#xff0c;旨在在不显著牺牲音质的前提下减小音频文件的体积&#xff0c;使其适用于音乐和其他音频内容的存储与传输。相比之…