C语言整型常量的存储形式是怎样的?

发布时间:2024年01月18日

一、问题

????????整型常量的存储形式是怎样的?-8 在内存中的存储形式是怎样的?

二、解答

1、整型常量在计算机中的存储形式主要取决于其类型和编译器实现。

(1) 整型常量

?? 整型常量(如int类型)在计算机内存中是以二进制补码的形式存储的。
?? 根据整数的大小,它可能占用2个字节(对于short int类型,在某些系统上)、4个字节(通常对于
int类型)、8个字节(对于long int或long long int类型)等不同长度的内存空间。
?? 例如,如果有一个32位(4字节)的int类型的整型常量值为17,则其在内存中的二进制补码形式表示
为:00000000 00000000 00000000 00010001。

(2)不同类型整型常量的书写方式

? 十进制:直接写出数字即可,如 int a = 123;
? 八进制:以0开头,后跟八进制数字(0-7),如 int b = 023; 实际值是十进制的19
? 十六进制:以0x或0X开头,后跟十六进制数字(0-9、A-F 或 a-f),如 int c = 0x17; 实际值
也是十进制的23

????????无论采用哪种书写方式,最终在内存中的存储都是按照对应数据类型的二进制格式来完成的。并且,根据C语言标准和不同的系统架构,不同大小的整型变量会有特定的最小和最大取值范围。

2、-8 在内存中的存储

????????整数 -8 在内存中的存储形式取决于整数的位宽,通常我们讨论的是 32 位(4字节)的 int 类型。在大多数现代系统中,采用补码表示负数,因此:

对于一个 32 位的 int 类型:

8 的原码是 00000000 00000000 00000000 00001000    

要得到 -8 的补码

-->首先取反得到其反码,然后加 1:
-->反码:
        11111111 11111111 11111111 11110111
-->补码:
        11111111 11111111 11111111 11110111 + 1
      = 11111111 11111111 11111111 11111000

????????所以,在内存中,-8 会以补码形式 11111111 11111111 11111111 11111000 存储。若是在 16 位系统或 16 位整型变量中,则为 11111111 11111000。

三、总结

????????整型常量在内存中以?进制形式存储的有两种数据:有符号和?符号。

????????上?介绍的是有符号的数据在内存中的存储形式,?符号的整型常量是正数或者 0,所以最?位不?来存放数据的符号,?是?来存放数据本身。

文章来源:https://blog.csdn.net/W_Fe5/article/details/135672317
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。