标签: internal-representation

为什么对签名数字更喜欢两个补码而不是符号和数量?

我只是好奇是否有一个理由为了在二进制中表示-1,使用二进制补码:翻转位并加1?

-1表示为11111111(二进制补码)而不是(对我来说更直观)10000001,它是二进制1,第一位作为负标志.

免责声明:我不依赖二进制算术来完成我的工作!

math binary negative-number internal-representation twos-complement

196
推荐指数
8
解决办法
8万
查看次数

Java继承的大小成本是多少?

在互联网上有各种各样的文章,试图通过经验估计java.lang.Object特定JVM实现的开销.例如,我在一些JVM中看到了一个Object 估计为8字节的裸大小开销.

我想知道的是,extends关系的典型JVM实现是否在类层次结构的每个级别引入增量大小开销.换句话说,假设您有一个具有N级子类的类层次结构.是类实例O(1)还是O(N)的内存中表示的开销?

我想它是O(1)因为虽然你需要成为Java Object(vtable,类链)的一些隐藏的蓬松东西的大小会随着继承层次结构的增长而增长,但它们每个类增长,而不是每个实例,JVM实现可以在连接到每个实体的常量大小的头中存储这些实体的常量大小的指针Object.

所以从理论上讲,直接附加到任何Java对象的内存中表示的开销应该是O(1)的继承深度N.有谁知道它在实践中是否正确?

java oop inheritance jvm internal-representation

52
推荐指数
2
解决办法
4088
查看次数

几种语言的int((0.1 + 0.7)*10)= 7.怎么预防这个?

最近我遇到了几种语言的bug /功能.我对它是如何引起的有一个非常基本的了解(我想要一些详细的解释),但是当我想到多年来我必须犯下的所有错误时,问题是如何确定" 嘿,这可能会导致一个荒谬的bug,我最好使用任意精度函数 ",其他语言确实有这个bug(和那些没有,为什么).另外,为什么0.1 + 0.7这样做,而0.1 + 0.3没有,还有其他众所周知的例子吗?

PHP

//the first one actually doesn't make any sense to me,
//why 7 after typecast if it's represented internally as 8?
debug_zval_dump((0.1+0.7)*10); //double(8) refcount(1)
debug_zval_dump((int)((0.1+0.7)*10)); //long(7) refcount(1)
debug_zval_dump((float)((0.1+0.7)*10)); //double(8) refcount(1)
Run Code Online (Sandbox Code Playgroud)

蟒蛇:

>>> ((0.1+0.7)*10)
7.9999999999999991
>>> int((0.1+0.7)*10)
7
Run Code Online (Sandbox Code Playgroud)

使用Javascript:

alert((0.1+0.7)*10); //7.999999999999999
alert(parseInt((0.7+0.1)*10)); //7
Run Code Online (Sandbox Code Playgroud)

红宝石:

>> ((0.1+0.7)*10).to_i                                                  
=> 7                                                                    
>>((0.1+0.7)*10)                                                       
=> 7.999999999999999                                                    
Run Code Online (Sandbox Code Playgroud)

javascript php ruby python internal-representation

14
推荐指数
3
解决办法
5008
查看次数

布尔值为true - 正1还是负1?

我正在设计一种语言,并试图决定是否true应该是0x01或0xFF.显然,所有非零值都将转换为true,但我正在尝试确定精确的内部表示.

每种选择的优缺点是什么?

boolean language-design internal-representation

12
推荐指数
5
解决办法
2万
查看次数

sql server中datetime的内部表示是什么?

SQL Server(2000和2005,如果不同)中存储的日期时间值的基础数据结构是什么?即到字节表示?

大概是您选择日期时间列时获得的默认表示是特定于文化的值/可能会更改.也就是说,我们看不到的一些底层结构被格式化为YYYY-MM-DD HH:MM:SS.mmm.

我问的原因是我的部门普遍认为它存储在内存中的字面意思是YYYY-MM-DD HH:MM:SS.mmm但我确信情况并非如此.

sql sql-server datetime sql-server-2005 internal-representation

9
推荐指数
1
解决办法
8306
查看次数

部分应用程序如何在运行时表示?

当我map (1+) list在Haskell中编写类似内容时,内部表示是(1+)什么?由于它是部分应用(+),争论1必须在某处保存,但我无法理解这一点.有人可以给我一个简短的解释,如何实现currying和部分应用程序?

haskell currying partial-application internal-representation

8
推荐指数
3
解决办法
456
查看次数

C++ 数组和指针的 sizeof 结果

在 x86_64 架构上,一个指针是 8 个字节。对我来说sizeof(x)应该返回 8是有意义的。我知道 achar是单个字节,而 5 个字节是 array 的大小z。为什么sizeof(z)不返回8背后的直觉是什么?

int* x = new int[10];
char z[5];

// Returns 8
std::cout << "This is the size of x: " << sizeof(x) << std::endl;

// Returns 5
std::cout << "This is the size of z: " << sizeof(z) << std::endl;
Run Code Online (Sandbox Code Playgroud)

c++ pointers internal-representation abstract-machine

7
推荐指数
1
解决办法
121
查看次数

Haskell 运行时如何表示惰性值?

我什至不知道如何表达这个问题。假设有一个指向未计算表达式的指针。如果它被请求(通过一些强制它的严格函数),那么指针值将被评估的值替换。对?我错了吗?

所以我假设每个指针都有一个标志,说明它是否已被评估。

如果评估未定义,例如空列表的头部怎么办?“指针”中存储了什么?

haskell pointers lazy-evaluation internal-representation

4
推荐指数
1
解决办法
80
查看次数

如何在JavaScript中表示超时?

当我调用set timeout时,它返回一个数字,例如

> setTimeout(function(){ console.log('done'); },1000);
4431
"done"
Run Code Online (Sandbox Code Playgroud)

我知道我可以使用这个号码来呼叫,clearTimeout()但这个号码在内部代表什么?

javascript v8 timing internal-representation

2
推荐指数
1
解决办法
125
查看次数

我了解到在 C 语言中 char 类型的范围从 -128 到 127,但似乎不是这样

这可能是一个非常基本的问题,但我无法做到。这是我正在使用的。

#include <stdio.h>

int main(void)
{
    char c1, c2;
    int s;
    c1 = 128;
    c2 = -128;

    s = sizeof(char);

    printf("size of char: %d\n", s);
    printf("c1: %x, c2: %x\n", c1, c2);
    printf("true or false: %d\n", c1 == c2);
}
Run Code Online (Sandbox Code Playgroud)

结果是这样的。

size of char: 1
c1: ffffff80, c2: ffffff80
true or false: 1
Run Code Online (Sandbox Code Playgroud)

我将值 128 分配给有符号(正常)字符类型,但它没有溢出。

此外,c1 和 c2 似乎都持有 4 个字节,并且 -128 和 128 是相同的值。

我如何理解这些事实?我需要你的帮助。非常感谢。

c signed char internal-representation integer-promotion

-2
推荐指数
1
解决办法
225
查看次数