对于整数和浮点数在内存中的储存,在编译器(本人是使用vs)中是两种不同的储存方式。
整数
计算机一般储存整形一般分为3部,第一步为生成原码,第二步形成反码,最后储存补码。拿int类型做实例。
第一步生成原码:int类型会向编译器申请4个字节(x84的条件下),也就是32个bit位。然后会把你输入的10进制的数字,转换成2进制的数字。在转换2进制的过程中,计算机会检测的类型是无符号的整形(unsigned int)还是有符号的整形(int)。如果是有符号的整形(int)他第一个bit位子会变成符号位(有负号就是1,正数为0),拿-3举例子(10000000 00000000 00000000 00000011)
第二步形成反码:将原码的符号位不变,其他位依次按位取反就可以得到反码。-3就变更成(11111111 11111111 11111111 11111100)
第三步储存补码:反码+1就得到补码。在计算机内存中-3的储存应该是(11111111 11111111 11111111 11111101)
之后如果计算机要调用,会把储存的补码转换成原码,最后变成10进制给你。