我是靠谱客的博主 安详康乃馨,最近开发中收集的这篇文章主要介绍C语言-数据在内存中的存储 整数在内存中以二进制序列存储,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

创建任一数据类型都会在内存占用一块空间,其空间占用大小与数据类型有关。

//常见类型
char      //字符         占用1个字节,即8个bit,内存以二进制序列存储8位
short     //短整型           2         16                       16       
int       //整型             4         32                       32
float     //单精度浮点型      4         32                       32
double    //双精度浮点型      8         64                       64

了解到以上常见类型后,我们继续深入了解其归类:

unsigned(有符号)        signed(无符号)

什么是有符号,什么是无符号?

该数据类型是有符号时,可以存储正负数;无符号,则存储正数(也可以存储负数,但)。

整型类:

char     //取决于编译器,大多数是有符号
     unsigned char 
     signed char
short    //默认有符号 等价于signed short 
     unsigned short 
     signed short    
int      //默认有符号 等价于signed int
     unsigned int
     signed int
long     //默认有符号 等价于signed long
     unsigned long 
     signed long 

所以对于int, short, long而言,C语言规定默认为有符号,可以存储正负数;

char则需要根据编译器自身。

浮点类:

float, double, long double全都默认为有符号;

 整数在内存中以二进制序列存储

整数的二进制序列有三种表示方法,分别为原码,反码,补码;

在内存中,所有整数都以补码的形式存储在内存中;

对于正数原码,反码,补码都相同;

而对于负数,原码都是整数的二进制值;

                      反码则是对原码按位取反(~);

                      补码是在反码基础上+1;

举例说明:

int a = -10;
//原码: 10000000 00000000 00000000 00000100  可以看出原码就是整型的二进制值,
//同时int类型在内存中占据4个字节,1个字节8个bit位,所以是32位。
//反码: 11111111 11111111 11111111 11111011  反码则是对原码~(按位取反),
//符号位不变,其余0→1,1→0。
//补码: 11111111 11111111 11111111 11111100  补码=反码+1

除此以外,编译器为了方便观察,可以转为16进制位

2进制    1111 1111 1111 1111 1111 1111 1111 1100
16进制     f    f    f    f    f    f    f    6   ->ffffff6
#include<stdio.h>
int main()
{
	int a = -10;
	printf("%dn", a);

	return 0;
}

 但可以发现内存中,是以f6 ff ff ff这样的方式存储的,为什么会这样?

这时我们要引入:大小端字节序存储。

了解大小端之前,我们需要先了解数据的高位低位。

对于一个数据:            低位   0x11223344   高位

从左到右,从低到高;

大端存储模式:        内存低地址   (高位) 0x44332211 (低位)   内存高地址   

数据的高位存于内存低地址,而低位存于高地址;

小端存储模式:        内存低地址   (低位) 0x11223344 (高位)   内存高地址

数据的低位存于内存低地址,而高位存于高地址;

那么这就是数据的存储的基本内容了。

最后

以上就是安详康乃馨为你收集整理的C语言-数据在内存中的存储 整数在内存中以二进制序列存储的全部内容,希望文章能够帮你解决C语言-数据在内存中的存储 整数在内存中以二进制序列存储所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(40)

评论列表共有 0 条评论

立即
投稿
返回
顶部