【发布时间】:2011-02-22 11:44:11
【问题描述】:
你好。我刚刚编写了我的第一个半显着 PC 程序,纯粹是为了好玩/为了解决问题而编写的,还没有在编程课上分配问题。我敢肯定,你们中的许多人都记得你们为了好玩而编写的第一个重要程序。
我的问题是,我对代码的效率不满意。我不确定这是我的终端的 I/O 限制还是我的代码本身的限制,但对于 8 位或更高的 DAC 分辨率,它似乎运行得很慢。
我没有评论代码,所以这里解释一下我试图用这个程序解决的问题:
DAC 的输出电压由具有位 Bn、Bn-1 ... B0 的二进制数和满量程电压确定。
输出电压具有以下形式的方程:
Vo = G( (1/(2^(0)))*(Bn) + (1/2^(0+1))*(Bn-1) + ... + (1/2^(0+n))*(B0) )
其中 G 是使所有位的输入 B 都达到满量程电压的增益。
如果你运行代码,这个想法会很清楚。
我的问题是,我认为我输出到控制台的内容可以用不到 108 行的 C++ 来实现。是的,它可以通过预先计算步进电压并简单地通过增量来渲染表格来轻松完成,但是我对这个程序的“自我要求”是,在某种程度上,它为每个二进制表示的输入执行上述系列计算.
我并不想对这个要求发疯。我希望这个程序能够证明它目前所做的公式的性质。我正在寻找的是关于如何使我的实现总体上更清洁、更高效的一些建议。
【问题讨论】:
-
+1 是我多年来见过的最干净的初学者代码。恭喜!