我需要创建一个用于创建逻辑电路和查看结果的应用程序.这主要用于A-Level(英国,一般为16-18岁)计算机课程.
我从来没有做过这样的任何应用程序,所以我不确定存储电路和评估结果的最佳设计(以可重复的速度,比如1.6Ghz单核计算机上的100Hz).
我希望允许这些门用于制作"芯片",然后可以在其他电路中使用(例如,你可能想要制作一个8位),而不是从基本门(和,或者nand等)构建电路.寄存器芯片,或16位加法器).
问题是这些电路的门数大量增加,这样如果模拟工作在每个单独的门上,它将有1000个门进行模拟,所以我需要简化这些可以放在电路中的元件,这样它们就可以了快速模拟.
我考虑为每个组件生成一个真值表,然后模拟可以使用查找表来查找给定输入的输出.虽然这些表的大小随着输入而大量增加,但问题出现了.如果芯片有32个输入,那么真值表需要2 ^ 32行.这在很多情况下使用大量内存比使用更多,因此对于非平凡组件不实用,它也不能用于存储其状态的芯片(例如寄存器),因为它们不能简单地表示为简单投入和产出表.
我知道我可以硬编码注册芯片之类的东西,但是因为这是出于教育目的,我想要它,以便人们可以制作自己的组件,以及查看和编辑标准的实现.我考虑过允许使用代码(例如dll或脚本语言)创建和编辑这些组件,以便例如加法器可以表示为"output = inputA + inputB",但是假设学生已经完成了足够的编程.给定语言能够理解和编写这样的插件来模仿他们的电路结果,这可能不是这样的...
是否有其他方法可以采用布尔逻辑电路并自动简化它,以便模拟可以快速确定组件的输出?
至于存储组件,我正在考虑存储某种树结构,这样一旦评估了链接到其输入的所有组件,就会评估每个组件.
例如,考虑:AB + C模拟器首先评估AND门,然后使用AND门和C的输出来评估OR门.
然而,我刚刚想到,如果输出链接回输入,将导致死锁,因为输入将永远不会被评估...我如何克服这个问题,因为程序只能评估一个门时间?
我想创建一个简单的bash脚本来在OS X上启动Java程序.文件名,文件路径和直接工作文件夹都包含空格.当我这样做:
#!/bin/sh
cd `dirname $0`
Run Code Online (Sandbox Code Playgroud)
我明白了
usage: dirname path
Run Code Online (Sandbox Code Playgroud)
我也试过把报价放在各种不同的地方.最精细的例子是
cd "`dirname \"$0\"`"
Run Code Online (Sandbox Code Playgroud)
没有任何效果.我要么得到错误消息,要么得到神秘的"用法:dirname路径"消息.
可能有哪些其他方法可行?
编辑:对于除了我以外的任何人来说,这似乎不是问题所以它必须只是我的盒子.我将在下面接受我自己的帖子,因为它是解决这个特定问题的唯一解决方案.但是,我肯定赞同那些似乎对其他人都有效的解决方案,非常感谢大家的帮助.
我知道NES有4色精灵(1通常是透明的 编辑:根据zneak,1种颜色总是透明的).那么原版的最终幻想怎么会有这么多精灵有4种颜色+透明?(示例精灵表 - 特别是看底部附近的大型精灵表.)
我知道你可以分层精灵来实现额外的颜色(例如:Megaman的分层给他6种颜色:body = 3 + trans,face = 3 + trans).奇怪的是,这些FF都是4种颜色+透明.如果FF使用类似的分层,为什么他们会停在4 + 1而不是利用6 + 1?
是否有另一种显示精灵的方法可以为您提供额外的颜色?
同样有趣的是大精灵是18x26.精灵是8x8(我想我读到的地方有时是8x16)但是18和26都是[因子8] + 2.非常奇怪.
我花了几个小时调试问题只是为了让一个更有经验的人看看IL(类似00400089 mov dword ptr [ebp-8],edx)并指出问题所在.老实说,这对我来说就像希伯来语 - 我不知道它在说什么.
哪里可以了解更多关于这些东西并给我周围的人留下深刻印象?我的目标是阅读以下内容并发表评论:是的,你有竞争条件.
.maxstack 2
.entrypoint
.locals init (valuetype [MathLib]HangamaHouse.MathClass mclass)
ldloca mclass
ldc.i4 5
Run Code Online (Sandbox Code Playgroud) 我已经阅读了一些关于属性的内容,我不确定那是不是我想要的.基本上我有一个抽象的射弹类,所以所有"子弹"都有一个共同的实现,他们所附加的任何"武器"都可以使用.
我知道你可以声明一个抽象类并强制定义你在其中声明的函数.我想对变量做同样的事情(我认为,显然这个功能似乎不存在,所以也许我正在考虑解决方案错误)
我的问题是,由于所有"子弹"应该有一个损害,我想被迫在代码中声明子弹的伤害值.
可能存在这样一种情况:圆形枪来自电击枪并且它没有损坏,但我觉得我仍然应该因为2个原因而宣布它.
代码中的显式声明确实零损坏值得一行代码.你不必顺利,我猜它没有做任何事,因为它没有说明明确说明的损害.
调试(这是另一个是次要的主要原因)我想被迫,所以我不要忘记.我不想错误输入变量名称或忘记完全分配一个值并寻找半小时试图弄清楚为什么我的火箭或导弹或子弹或其他任何没有造成任何损害或正在做的正是1或金额我使用的最后一个抛射物或者我在抽象类中声明的浮点变量的默认值最终为.我想立即抛出一个错误告诉我,在我的新子弹受到伤害之前我无法继续.
最近我发现,如果我需要查看变量是偶数(还是奇数),我只能看看变量的最后一位是否等于0.这个发现在实现时取代了少数模2计算,因此整个函数运行得更快.
还有像这样的"技巧",使用位可以替代其他计算,从而改善功能执行时间吗?
在C#中,将索引器声明为接口的一部分的语法是什么?它还是这个[]吗?在界面中使用this关键字有点奇怪.
任何人都可以告诉我如何在C#.NET版本2中以直接方式将一个字节数组添加到结构中?就像fread在C中发现的熟悉一样,到目前为止,我在读取字节流并自动填充结构方面没有取得多大成功.我已经看到了一些实现,其中通过使用unsafe关键字在托管代码中存在指针hocus-pocus .
看看这个样本:
public unsafe struct foobarStruct{
/* fields here... */
public foobarStruct(int nFakeArgs){
/* Initialize the fields... */
}
public foobarStruct(byte[] data) : this(0) {
unsafe {
GCHandle hByteData = GCHandle.Alloc(data, GCHandleType.Pinned);
IntPtr pByteData = hByteData.AddrOfPinnedObject();
this = (foobarStruct)Marshal.PtrToStructure(pByteData, this.GetType());
hByteData.Free();
}
}
}
Run Code Online (Sandbox Code Playgroud)
我有两个构造函数的原因 foobarStruct
这种实现是否足够好还是有更清洁的方法来实现这一目标?
编辑:我不想使用ISerializable接口或其实现.我正在尝试读取二进制图像以计算出使用的字段并使用PE结构确定其数据.
在为ASP.NET MVC站点创建概念证明并确保适当分离关注点后,我注意到我正在进行大量昂贵的冗余数据库调用以获取有关当前用户的信息.
作为历史上的桌面和服务人员,我的第一个想法是将db结果缓存到某些statics中.它没有花太多时间进行搜索,看到这样做会使当前用户的数据在所有用户的整个AppDomain中持续存在.
接下来我想到了使用HttpContext.Current.但是,如果您在用户注销时将内容放在此处,那么当他们登录时,您的缓存数据将会过时.我每次登录/退出时都可以更新这个,但我不知道这是否正确.在没有其他想法的情况下,这就是我倾向于的地方.
什么是准确缓存用户详细信息并避免必须进行大量数据库调用的轻量级方法?
Windows为CPU电源管理提供了哪些API(我对CPU频率调整感兴趣,设置最小和最大CPU频率 - 类似于您在电源计划中可以在控制面板中执行的操作,但是采用编程方式).我也对.Net API感兴趣.(这不是我打算在生产环境中使用的东西,而是作为一些动态电源管理算法的概念证明)