计算机是如何执行mp3 的全过程的?
发布网友
发布时间:2023-08-16 00:19
我来回答
共5个回答
热心网友
时间:2024-11-24 20:49
我只知道一些基本的,先说给你听听,mp3是利用音频压缩技术,将声音用1:10甚至1:12的压缩率压缩成容量较小的文件,可以保持较好的音质。由于这种压缩方式的全称叫mpeg audio layer3,在你点击后通过相同的方式解压.2进制就没什么好说的了,电脑所有的数据都是由2进制记录下来的
1.二进制计数法的概念
人们在日常生活中和生产实践中,我们接触到越来越多的数字,创造了分组计数的制度.而我们的生活中,一般采用了"满十进一"的十进制计数法,我们现在已经熟悉并经常运用这一种计数法了.但也有采用其他计数法.如二进制,六进制,十六进制等计数法.现在就来讲一讲"二进制"和"十进制"的关系
2.十进制和二进制数的互化
(1)化十进制数为二进制数
<1>比较小的十进制数为二进制数可以用观察法.
例:化45为二进制数
因为2的0次方,1次方,2次方~~~10次方分别等于1,2,4,8,16,32,64,128,256,512,1024.
所以 45=32+8+4+1=2⑤+2③+2②+1=1*2⑤+0*2④+1*2②+0*2①+1*1=101101(二进制)
<2>一般化法
利用短除法(通常叫做"二除取余法")
(2)化二进制数为十进制数
这是比较方便的,只需把二进制是写成展开式;计算即得.
例1 化101101(二进制)为十进制数.
101101(二进制)=1*2⑤+0*2④+1*2③+1*2②+0*2①+1*1=32+0+8+4+0+1=45
例 2 化1011010101(二进制)为十进制数.
1011010101(二进制)=1*2⑨+1*2⑦+1*2⑥+1*2④+1*2②+1*1=512+128+64+16+4+1=725
编程中,我们常用的还是10进制……必竟C/C++是高级语言。
比如:
int a = 100,b = 99;
不过,由于数据在计算机中的表示,最终以二进制的形式存在,所以有时候使用二进制,可以更直观地解决问题。
但,二进制数太长了。比如int 类型占用4个字节,32位。比如100,用int类型的二进制数表达将是:
0000 0000 0000 0000 0110 0100
面对这么长的数进行思考或操作,没有人会喜欢。因此,C,C++ 没有提供在代码直接写二进制数的方法。
用16进制或8进制可以解决这个问题。因为,进制越大,数的表达长度也就越短。不过,为什么偏偏是16或8进制,而不其它的,诸如9或20进制呢?
2、8、16,分别是2的1次方,3次方,4次方。这一点使得三种进制之间可以非常直接地互相转换。8进制或16进制缩短了二进制数,但保持了二进制数的表达特点。在下面的关于进制转换的课程中,你可以发现这一点。
大概就是这样
热心网友
时间:2024-11-24 20:49
假设 你的系统是windows(任何版本)播放器是foobar2000 声卡不是AC97的
那么当你点击这个MP3的图标后直到声卡出声音
1双击这个文件》系统查找相关连的程序》找到foobar与此格式文件关联》启动foobar并且在启动程序的后缀上加入D/音乐/mp3/001.mp3 》foobar启动后得到D/音乐/mp3/001.mp3,知道要播放他》foobar在调用系统API》系统API将文件地址和长度转换成相应的机器码》提交给驱动程序读取》大概执行一个CP的过程把文件内容复制到一个指定的内存地址(通常这个内存地址是应用程序决定的比如foobar,而并非系统)》foobar开始顺序的把文件内容解码,发送到声卡的DAC(就是咱们常说的那个数模转换,)芯片进行解码》DAC生成相应的波形》功放》扬声器》发出声音。
基本是这样一个过程了。。其实你说的究竟是读到临时内存还是复制到临时内存的问题。。这个一个原理,对于这种解码操作读出来和复制出来没区别的
热心网友
时间:2024-11-24 20:50
!~ 厉害 SM的回答
热心网友
时间:2024-11-24 20:50
LZ很专业 很强大
热心网友
时间:2024-11-24 20:51
看得我一阵迷糊,什么都不懂!
抱歉!!