我们如何知道一组位是形成实数还是整数?

时间:2015-07-09 18:08:12

标签: computer-science computer-architecture

给定一组位(64)计算机如何知道它们属于实数还是整数?

2 个答案:

答案 0 :(得分:2)

大多数现代计算机没有硬件类型标签,因此64位存储空间是64位数据块,这意味着什么。它可以是带符号的64位整数,也可以是无符号的64位整数,64位浮点数,两个32位整数,但是(重复以前的数据类型)。也许这是4个16位整数?也许它是一个7个字符的字符串,具有领先的8位字符串长度?

这些之间的区别在于实际执行的机器指令。因此,打字由指令决定,而不是由存储器确定。

答案 1 :(得分:1)

计算机不知道也不关心。

由程序来决定是否应将该特定内存用作整数(长整数),实数(双精度数)或字符数组。

根据语言的不同,相同的值可以在不同时刻用作双精度实数,如长整数或8字节

使用C语言的示例:

#include <stdio.h>

int main(){
    double r = 12.5;
    void *pt = &r;
    long long unsigned int *up = pt;
    char *cp = pt;
    int i;

    printf("Real : %f\n", r);
    printf("Int  : %llx\n", *up);
    for (i=0; i<8; i++) {
        printf("%02x", cp[i]);
    }
    printf("\n");

    return 0;
}

输出:

Real : 12.500000
Int  : 4029000000000000
0000000000002940

将float指针转换为int指针是正式未定义的行为,但它在小端32位系统上的工作方式类似。

相关问题