Computer science 我们如何知道一组位是实数还是整数?

Computer science 我们如何知道一组位是实数还是整数?,computer-science,computer-architecture,Computer Science,Computer Architecture,给定一组位(64),计算机如何知道它们属于实数或整数?计算机不知道也不关心 由程序决定是否将特定内存用作整数(long)、实数(double)或字符数组 根据语言的不同,相同中的相同值可以在不同时刻用作双精度实数、长整数或8字节 使用C语言的示例: #include <stdio.h> int main(){ double r = 12.5; void *pt = &r; long long unsigned int *up = pt; ch

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

计算机不知道也不关心

由程序决定是否将特定内存用作整数(long)、实数(double)或字符数组

根据语言的不同,相同中的相同值可以在不同时刻用作双精度实数、长整数或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;
}

将浮点指针转换为整型指针是一种形式上未定义的行为,但在小端32位系统上的工作原理与之类似。

大多数现代计算机没有硬件类型标记,因此64位存储块就是64位数据块,这意味着一些东西。它可以是一个有符号的64位整数,也可以是一个无符号的64位整数,一个64位浮点,两个32,但是(重复前面的数据类型)。可能是4个16位整数?可能是一个7个字符的字符串,前导8位字符串长度


它们之间的区别将取决于实际执行的机器指令。因此,类型是由指令决定的,而不是由内存存储决定的。

这不是由实现体系结构的人(或者更好的是编译器)来决定的吗?也许你可以澄清你的问题或加上一个例子。你指的是实数还是整数?计算机不会知道,但是程序员/编译器会根据指令的不同使用不同的指令。弱类型硬件(TM)你能把它重新表述为一个编程问题吗?64位是从哪里来的?这与询问它是有符号整数还是无符号整数是一样的——它可以是任何整数,这取决于你如何解释它。
Real : 12.500000
Int  : 4029000000000000
0000000000002940