请问老师关于不同类型数据的问题
来源:2-4 指令入门(2)——寻址模式、浮点数和指令分类

Osuribaba
2020-05-23
比如有个 char 类型的 a,还有个 int 类型的 b,这俩在内存里存的都是二进制,那如果让这俩相加的话,cpu是咋知道这俩不能按照 int + int 处理而是得按照 char + int 处理呀?或者说我想问的是计算机是如何识别出不同类型比如整形、浮点、字符等,虽然说这些类型都是写代码的人定义的比如 int b = 666,这个 666 我知道存到了内存中,但是这个 int 我不太能想明白计算机是怎么处理的?
谢谢老师~
2回答
-
求老仙
2020-05-25
hello,cpu不知道类型。cpu只认识浮点型和整数。如果是浮点型,或整数运算。那么cpu设计了不同的指令。不存在类型转换,必须编译器搞定。另外,字符就是整数。
122020-07-10 -
慕粉1538407886
2020-05-24
int 本身是高级语言出来的一个变量 你可以理解为对应的是一个类
然后 int b = 6 => 理解为实例化一个对象 名字是 b 数字是 6 类型int
当你存取值的时候 就直接当 6 用
double c = 6.0 => 理解为实例化一个对像 名字是 c 值是6 类型是double
但是将它存入内存的时候 它会调用一个函数 就是对应老师讲的 -1^sin(n)*(1+xxx)*2(e-1024)
计算出它实际对应的一个二进制存起来
取的时候就对应的再算一波出来
int 也好 double 也好 可能就是 对应的一个数字进行标识 01 -> int 02-> double
可能具体到汇编语言就是一个个函数 专门用来处理这些类型吧
不同类型对应不同的函数 然后 名字呀 数值呀 类型呀 都会作为参数 传给这个函数
汇编本身不存在这些类型 也不存在 = 这种操作 汇编只有 load store 和 计算 比较
所以这种 赋值也好 计算也好 最终都会转化为 一个个很沙雕的 指令
一步步的 存起来 计算出来
疯狂的在 cpu 内存 寄存器 中来回传递
我估摸着是这么回事 。。。。
112020-05-26
相似问题