问题标签 [internal-representation]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
boolean - 布尔真 - 正 1 或负 1?
我正在设计一种语言,并试图决定true
应该是 0x01 还是 0xFF。显然,所有非零值都将转换为 true,但我正在尝试确定确切的内部表示。
每种选择的优缺点是什么?
binary - 为什么更喜欢二进制补码而不是有符号数的符号和大小?
我只是想知道为什么为了用二进制表示-1而使用二进制补码是有原因的:翻转位并加1?
-1 由 11111111 (二进制补码)表示,而不是(对我来说更直观) 10000001 ,它是二进制 1,第一位为负标志。
免责声明:我的工作不依赖二进制算术!
sql - sql server中日期时间的内部表示是什么?
存储在 SQL Server 中的日期时间值的基础数据结构是什么(如果不同,则为 2000 和 2005)?即到字节表示?
据推测,您选择日期时间列时获得的默认表示是特定于文化的值/可能会发生变化。也就是说,一些我们看不到的底层结构被格式化为 YYYY-MM-DD HH:MM:SS.mmm。
我问的原因是我的部门普遍认为它以 YYYY-MM-DD HH:MM:SS.mmm 的形式存储在内存中,但我确信情况并非如此。
haskell - 部分应用程序在运行时如何表示?
当我map (1+) list
在 Haskell 中编写类似的东西时,内部表示是(1+)
什么?由于它是 的部分应用(+)
,因此必须将参数1
保存在某个地方,但我无法理解这一点。有人可以给我一个简短的解释,如何实现柯里化和部分应用?
php - int((0.1+0.7)*10) = 7 几种语言。如何防止这种情况?
最近我遇到了几种语言的错误/功能。我对它是如何引起的有一个非常基本的知识(我想要一些详细的解释),但是当我想到这些年来我必须犯的所有错误时,问题是我如何才能确定“嘿,这可能会导致一个荒谬的错误,我最好使用任意精度函数“,其他语言确实有这个错误(以及那些没有的,为什么)。另外,为什么 0.1+0.7 会这样做而 0.1+0.3 不会这样做,还有其他众所周知的例子吗?
PHP
Python:
Javascript:
红宝石:
javascript - JavaScript 中的超时是如何表示的?
当我调用 set timeout 它返回一个数字,例如
我知道我可以用这个号码打电话clearTimeout()
,但这个号码在内部代表什么?
math - 2 个负整数的减法(二进制补码)永不溢出
我在一本计算机体系结构教科书中遇到了这个问题:
从另一个严格负整数(二进制补码)中减去一个严格负整数永远不会溢出。
教科书没有继续解释这个断言。它激起了我的好奇心。
为什么这个说法是真的?
evolutionary-algorithm - 试图为遗传(进化)算法找到一个好的数据表示,但我无法想象一个
免责声明
首先,这是为了作业,所以不要问为什么这么做作,就是这样,也只能这样。(我得到很多“如果你改变一些东西怎么样”),对不起......我不能。
另外我必须使用进化算法,这意味着父母有孩子,他们可以变异/重组,形成新的世代并最终导致解决方案。
/免责声明
我有n*2
长度为 n 的单词。我必须制作一个n^2
包含所有这些单词的矩阵。这些词可能是胡言乱语,但它们必须能够适应这个矩阵(这是用户的要求)。
因此AGE,AGO,BEG,CAB,CAD,DOG
会给我这个结果(至少有 2 个可能):
我必须使用进化算法。因此,我需要找到一种方法将我的信息编码到染色体中。
我确实想出了:
每个单词都必须出现,在矩阵中具有起始位置和方向(左右或上下)。因此我有[Word][Orientation][StartPosition]
哪里开始位置是[0][0]
/ [0][1]
/ [1][0]
etc(左列和顶行)。但它有限制,我需要验证方向是否适合起始位置。
问题:
染色体必须是可能的解决方案,而这只是解决方案的一部分。
因为我的解决方案必须是一个包含所有单词的矩阵,以“适合”染色体也必须以某种方式代表整个矩阵。但这会遇到几个问题。我只能从一个方向的一个起始位置有一个单词(除了前两个单词,它们在不同方向共享相同的起始位置)。我看不出这是尝试进化算法的有效方式。我只是看不到任何阶段的工作,尤其是突变/重组。
我认为它完全错误吗?如果是这样……为什么?以及我如何尝试以这样一种方式对我的数据进行编码,以便让我经历所有阶段(繁殖、突变/重组、自然选择……能够计算适应度并开始新一代)而无需大量垃圾数据(一个单词出现两次,丢失一个单词,与它的起始位置相比,一个单词的方向错误)?
编辑
我将使用这种表示来实现许多其他受自然启发的算法,因此我需要一个“好的”数据表示。没有什么临时的东西会在以后伤害我。
不过老实说,我想不出什么好办法。因为我有很多限制(也许我一直在思考这个问题太久了,我无法超越它们,而且它们可能并不真的存在)。我真的很想要一个二进制表示,但这似乎是不可能的。
c++ - C ++编写解释器-确定break语句的循环目标c ++
我正在用 C++ 编写一个简单的程序解释器。当我构建程序的内部表示并得到一个 break 语句时,我如何确定包含循环的目标位置?
我的 break 语句对象将 while 语句的目标作为参数,我该如何确定呢?
java - Java继承的大小成本是多少?
互联网上有各种文章试图凭经验估计java.lang.Object
特定 JVM 实现的开销。例如,我已经看到在某些 JVM 中Object
估计为 8 字节的裸机的大小开销。
我想知道的是,extends
关系的典型 JVM 实现是否在类层次结构的每个级别都引入了增量大小开销。换句话说,假设您有一个包含 N 级子类的类层次结构。类实例的内存表示的开销是 O(1) 还是 O(N)?
我想它是 O(1),因为虽然你需要成为 Java 的一些隐藏的蓬松东西Object
(vtable,类链)的大小会随着继承层次结构的增长而增长,但它们会按类增长,而不是按实例增长,并且 JVM 实现可以将指向这些实体的恒定大小指针存储在附加到每个Object
.
所以理论上,直接附加到任何 Java 对象的内存表示的开销对于继承深度 N 应该是 O(1)。有谁知道这在实践中是否正确?