是否有一个用于JavaScript或内置的bignum库,我可以包括
<script type="text/javascript" src="the_bignum_library.js"></script>
Run Code Online (Sandbox Code Playgroud)
?
我认为我的用户更愿意在网页中输入数字并等待7秒才能获得结果,而不是下载可执行文件并点击一堆"此可执行文件可能会损害您的计算机"警告屏幕进行安装.
我考虑过自己的http://github.com/silentmatt/javascript-biginteger或http://www.mainebrook.com/john/fun/euler.html.或者你会建议从JavaScript调用Java bignum库,如apfloat?
我正在为嵌入式系统编写启动代码 - 在跳转到main()函数之前加载初始堆栈指针的代码 - 我需要告诉它我的应用程序将使用多少字节的堆栈(或更大的,保守估计).
我被告知gcc编译器现在有一个-fstack-usage选项和-fcallgraph-info选项,它可以以某种方式用于静态计算我的"最大堆栈使用率".(" Botcazou,Comar和Hainque的编译时堆栈需求分析与GCC").
奈杰尔琼斯说,递归在嵌入式系统中是一个非常糟糕的主意("计算你的堆栈大小"2009),所以我一直小心不要在这段代码中做任何相互递归的函数.
另外,我确保我的中断处理程序都没有重新启用中断,直到它们最终从中断返回指令,所以我不需要担心重入中断处理程序.
如果没有递归或重入中断处理程序,则应该可以静态地确定最大堆栈使用情况.(所以大多数答案如何确定最大堆栈使用量?不适用).我的理解是我(或者最好是我的PC上的一些代码在每次重建可执行文件时自动运行)首先找到每个中断处理程序的最大堆栈深度,当它没有被更高优先级的中断中断时,最大值当main()函数没有被中断时,它的堆栈深度.然后我将它们全部添加到找到总(最坏情况)最大堆栈深度.当main()后台任务在被最低优先级中断中断时处于最大深度时发生(在我的嵌入式系统中),并且当中断被下一个最低优先级中断时,该中断处于其最大深度中断,等等.
我正在使用YAGARTO和gcc 4.6.0来编译LM3S1968 ARM Cortex-M3的代码.
那么如何使用-fstack-usage选项和-fcallgraph-info选项与gcc一起计算最大堆栈深度?或者是否有更好的方法来确定最大堆栈使用量?
(有关针对Keil编译器的几乎相同问题,请参阅如何确定嵌入式系统中的最大堆栈使用情况?)
当我给Keil编译器提供"--callgraph"选项时,它会静态计算出我的"最大堆栈使用率".
唉,今天它给了我一个"最大堆栈使用= 284字节+未知(没有堆栈大小的函数......)"消息,以及"没有堆栈信息的函数"列表.
奈杰尔琼斯说,递归在嵌入式系统中是一个非常糟糕的主意("计算你的堆栈大小" 2009),所以我一直小心不要在这段代码中做任何相互递归的函数.
另外,我确保我的中断处理程序都没有重新启用中断,直到它们最终从中断返回指令,所以我不需要担心重入中断处理程序.
如果没有递归或重入中断处理程序,它应该能够静态地确定最大堆栈使用情况.(所以大多数答案 如何确定最大堆栈使用量? 不适用).我的理解是,处理"--callgraph"选项的软件首先找到每个中断处理程序在没有被更高优先级的中断打断时的最大堆栈深度,以及main()函数的最大堆栈深度.不打断 然后它将它们全部加起来以找到总(最坏情况)最大堆栈深度.当main()后台任务在被最低优先级中断中断时处于最大深度时会发生这种情况,并且当该中断被下一个最低优先级中断中断时,该中断处于其最大深度,依此类推.
我怀疑处理--callgraph的软件对"无堆栈信息的功能"列表中的小型汇编语言函数感到困惑.该--callgraph文档似乎暗示我需要手动计算(或作出保守估计),他们多少堆栈使用-他们是很短的,所以这应该是简单的-然后"使用汇编语言框架指令用于描述代码如何使用堆栈的代码." 其中之一是初始启动代码,在跳转到main()之前将堆栈重置为零 - 因此,实际上,这会消耗零堆栈.另一个是"故障"中断处理程序,它锁定在一个无限循环中,直到我循环上电 - 假设这消耗零堆栈是安全的.
我正在使用Keil uVision V4.20.03.0来编译LM3S1968 ARM Cortex-M3的代码.
那么我如何使用"框架指令"来告诉处理"--callgraph"的软件这些函数使用了多少堆栈?或者是否有更好的方法来确定最大堆栈使用量?
(有关针对gcc编译器的几乎相同的问题,请参阅如何使用gcc确定嵌入式系统中的最大堆栈使用量.)
在阅读字符串中的问题并将其与C进行比较时,不止一个人不鼓励使用strcmp(),说像
我也强烈建议你现在习惯使用strncmp(),以避免很多问题.
确保你使用strncmp而不是strcmp.strcmp非常不安全.
他们提到了什么问题?
之所以scanf()用绳子符和gets()强烈劝阻,是因为他们几乎不可避免地导致缓冲区溢出漏洞.但是,用缓冲区溢出是不可能的strcmp(),对吧?
"缓冲区溢出或缓冲区溢出是一种异常现象,程序在将数据写入缓冲区时会超出缓冲区的边界并覆盖相邻的内存."
( - 维基百科:缓冲区溢出).
由于strcmp()函数永远不会写入任何缓冲区,strcmp()函数不会导致缓冲区溢出,对吧?
人们不鼓励使用strcmp()和推荐的原因是什么strncmp()?
我刚开始按照http://developer.android.com/training/basics/firstapp/starting-activity.html教程开始进行Android开发,有一件事让我烦恼:我有两个使用"Android Activity"创建向导创建的类:
public class PlacesActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_places);
// I manually commented out the following line to get it to compile.
// getActionBar().setDisplayHomeAsUpEnabled(true);
}
// ... other methods
}
Run Code Online (Sandbox Code Playgroud)
和
public class ShowOnePlace extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_show_one_place);
getActionBar().setDisplayHomeAsUpEnabled(true);
}
// ... other methods
}
Run Code Online (Sandbox Code Playgroud)
Eclipse不断给我以下错误:
调用需要API级别11(当前最小值为8):android.app.Activity#getActionBar
调用需要API级别11(当前最小值为8):android.app.ActionBar #setDisplayHomeAsUpEnabled
直到我评论出其中一行(如上所示).现在应用程序似乎在我的Android设备上编译和运行没有错误.(好吧,至少没有那个错误).
所以:
getActionBar().setDisplayHomeAsUpEnabled(true);在一个类中给出该错误,但是在另一个类中,完全相同的行不是错误 - 甚至不是警告?是否有一些数学"最佳"基础可以加速因子计算?
背景:为了好玩,我正在实施我自己的bignum库.( - :这是我的第一个错误吗?:-).我正在通过打印n阶乘(n!)的精确值(十进制)来试验内部表示和回归测试中使用的各种基数.
我的bignum库表示整数并进行乘法的方式,时间与内部表示n!中"1"位的总数成正比.在我的内部表示中使用基数2,4,8,16,2 ^ 8,2 ^ 30等都给出了与任何特定数字完全相同的"1"位总数.
除非我做了一些错误,任何给定的阶乘(N!)在基地18代表具有比在基地10或或基地16或19基地等等(原则)表示相同的值较少的"1"位,使用基础18会使我的bignum库比使用base 10或某些二进制2 ^ w base或base 19运行得更快.我认为这与n这个事实有关!或者是短或具有更多的"尾随零"或两者时在基部18比底座10打印出来,或或基座16或基座19有一些其他,将工作比基部18甚至更好的基础?换句话说,是否存在代表n的基数!比基数18更少的"1"位?
这不是"bignum库和素性测试算法的便利基础是什么?" 因为我怀疑"的最佳基地与被称为是大阶乘整数,有很多的2和3个因素的工作"比"最佳基地不同的与没有任何小的因素,并可能整数工作主要".( - :加快因子计算 - 可能是以其他类型的计算为代价 - 我的第二个错误?:-)
编辑:例如:
(decimal) 16! ==
(decimal ) == 20,922,789,888,000 // uses decimal 14 "1" bits
(dozenal ) == 2,41A,B88,000,000 // uses decimal 10 "1" bits
(hexadecimal) == 130,777,758,000 // uses decimal 18 "1" bits
(octadecimal) == 5F,8B5,024,000 // uses decimal 14 "1" bits
Run Code Online (Sandbox Code Playgroud)
(我或多或少在右边存储数字,没有逗号,加上一些元数据开销).(虽然有人可能认为"当你增加基地将使用更少的'1’比特来表示给定数量"或""如果增加基体,将使用较少的非零数字来表示给定数量",上述示例显示并非总是如此.)
我将每个数字存储为一个小整数("int"或"long int"或"byte").有没有其他合理的方法来存储数字?我很确定我的计算机将这些整数存储为二进制 - 每个"1","2","4","8"和"G"数字使用一个"1"位; 每个"3","5","6","9"和"A"数字使用两个"1"位; 每个"7"和"B"数字使用三个"1"位; 每个"F"数字使用四个"1"位等.
该值(16!)的十进制和十八进制表示都需要14"1"位.所以我在之前的计算中犯了一个错误:对于每个n,代表n!在十进制中,并不总是比在十进制中表示相同的值具有更少的"1"位.但问题仍然存在:是否还有一些其他"最佳"基础需要最少1位的数据才能存储大型因子?
有人问:"你如何存储这些数字?" 嗯,这正是我的问题 - 存储n形式数字的最佳方法是什么!?我 …
以某种方式将正常压缩文件的"未压缩"版本存储在存储库中是否有意义?
如果是这样,有没有一种标准的方法来实现它?(也许是一个标准的预提交钩子,它将每个这样的文件解压缩到一个特别命名的文件夹中;以及一个post-checkout钩子,它将这些特别命名的文件夹压缩到LibreOffice知道如何读写的压缩文件中?类似于这个过程通过描述"我应该解压缩的拉链我归档之前?"?)(也许黑客的版本控制软件的代码,自动将解压缩旧版本,新版本和存储解压缩的文件之间的差异,如果失败或没有按"提供了显着的改进,回归原始系统存储原始文件之间的直接差异,或直接存储文件?)
我有一组经常编辑的OpenOffice/LibreOffice文件.我将它们存储在版本控制存储库中 - 如"图像是否应存储在git存储库中?"所建议的那样..虽然我碰巧使用TortoiseHg或SourceTree来访问我的存储库,而不是git.
我碰巧知道Open Office文件实际上是zip压缩容器,里面有一些XML文件.(我听说许多其他流行的应用程序"二进制文件格式"也是某种形式的zip压缩文件).
我的理解是,即使对这种"二进制"文件的最小改变也会导致整个新文件存储在存储库中.与"文本"文件中的小变化相反,这导致仅存储和传输变化.
从理论上讲,这将具有以下优势:
我最初收到一个AJAX响应{"B":{"1":"100","3":{"AA":256}},"A":100}并转换为javascript对象:
var jsonOBJ = {};
jsonOBJ = jQuery.parseJSON(data);
Run Code Online (Sandbox Code Playgroud)
未来的响应可以是初始响应的子集或超集.如果服务器上的表值未更改,则停滞数据将替换为空数组.例:
{"B":{"1":"90","2":200,"3":[]}}
{"B":[],"A":20}
每次收到AJAX响应时,对象都会更新为:
jQuery.extend(true, jsonOBJ, jQuery.parseJSON(data));
Run Code Online (Sandbox Code Playgroud)
但是我需要javascript对象来保持未更改的部分,所以我需要最终得到一个与上面的示例响应相同的对象:
jsonOBJ = jQuery.parseJSON('{"B":{"1":"90","2":200,"3":{"AA":256}},"A":20}');
Run Code Online (Sandbox Code Playgroud)
我首选的选项是从转换后的响应中删除空对象.是否存在可以执行此操作的jQuery扩展函数的现有函数或修改?
我正在寻找在游戏中构建虚拟机,并且想知道是否有人知道任何非常简单的虚拟机(我认为RISC/PIC接近我想要的)通常用于嵌入式项目,如控制机器人,电机,传感器等我的主要关注点是如果我自己编写一个编译器/汇编器.我很高兴使用已经存在的工具或者最简单的工具只是一个可以为它编译的C编译器:-p.
我真的不想在这里重新发明轮子,但我还需要在虚拟世界中运行数千个,因此它们必须尽可能简单快速.正如一个人已经提到的,我也不关心现实世界的问题,如时间和公共汽车以及所有有趣的东西.我认为他们的虚拟时钟将被限制为很慢的东西; 并且最终我可能不得不考虑本机编译以使它们运行得更快但是现在我只是将原型放在一起以获得概念的一般证明.
作为输入,我计划安装在圆柱体(16个,可能是32个)周围的距离,光线,材料和触摸传感器,然后只需2个电机进行定向输出,以控制每侧的一种轮子.基本上处理不会太费劲,世界将变得足够简单,以便机器不必在简单的任务中投入大量处理能力.
在内存方面,我希望他们能够存储足够的数据,在没有干预建立地图和收集统计数据的情况下保持几天.我不喜欢8bit会削减处理或内存,但16bit肯定会成为竞争者.32位和64位只会推动它,并且它们不会有超过1mb的内存 - 可能更接近256-512k.(比尔一说640k就足够了,为什么我不能!!)
embedded ×3
bignum ×2
javascript ×2
android ×1
biginteger ×1
c ×1
compression ×1
deprecated ×1
eclipse ×1
emulation ×1
factorial ×1
gcc ×1
integer ×1
jquery ×1
keil ×1
recursion ×1
strcmp ×1
string ×1