首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

C语言】数据在内存存储

前言 我们知道在操作符与2进制有关的操作符:& | ^ ~ >> << 使用这些操作符就离不开整数在内存存储。 我们一起来看看整数的存储。 2....这是因为在计算机系统,我们是以字节为单位的,每个地址单元都对应着一个字节,一个字节为8 bit 位,但是在C语言中除了8 bit 的 char 之外,还有16 bit 的short 型,32 bit...对于大端模式,就将0x11 放在低地址,即 0x0010 ,0x22 放在高地址,即 0x0011 。小端模式,刚好相反。我们常用的 X86 结构是小端模式,而KEIL C51 则为大端模式。...浮点数在内存存储 有符号和无符号的取值范围; 就相当于一个圈 用代码来计算一下: #include int main() { char a[1000];...说明整数和浮点数在内存存储是不相同的。 4.1 浮点数的存储 上⾯的代码, num 和 *pFloat 在内存明明是同一个数,为什么浮点数和整数的解读结果会差别这么大?

14910

C语言】数据在内存存储

---- 前言 不同的数据在内存存储形式是不同的,而当我们掌握数据在内存存储形式之后,会帮助我们更加了解计算机深层工作原理 废话不多说,我们接下来直接进入正题 一:数据类型详细介绍 ##1....20在表现形式为16进制的大端字节序下存为14 00 00 00 2.4还是上练习题吧(介绍的好累) 先说一些看似是废话,实际上却是非常重要的话语(不知道这些话很可能产生很多傻逼的疑问,) 1.c语言默认数字是...%d是打印int型的,也就是输出有符号的十进制数字,%u是打印unsigned int,也就是输出无符号的十进制整数 3.整型提升是c程序设计语言中的一项规定,在表达式进行计算时,所有的整型首先要提升为...("a=%d,b=%d,c=%d",a,b,c); return 0; } 储存: -1的补码为全1,当发生截断后存储在变量abc的内存形式均为11111111,但打印的是int型的十进制数字...,当我们在内存存储整数E时,E的真实值要加上一个中间数,对于不同的精度浮点数,这个中间数分别是127和1023 (2.指数从内存的取出):当我们存储的知识点介绍完之后,读取指数的方式又分为3种

1K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    数据在内存存储(c语言)

    整形在内存存储 原码、反码、补码 计算机的整数有三种2进制表示方法,即原码、反码和补码。...对于整形来说:数据存放内存其实存放的是补码。 这是因为在计算机系统,数值一律用补码来表示和存储。...而c则会从1111 1111变为11111111 11111111 11111111 11111111 也就是-1,所以b=256,c=0 让我们看看在内存存储 我们可以看到对于...这又是因为什么 大小端 大端(存储)模式,是指数据的低位保存在内存的高地址,而数据的高位,保存在内存的低地址 ; 小端(存储)模式,是指数据的低位保存在内存的低地址,而数据的高位,,保存在内存的高地...但是在C语言中除了8 bit的char之外,还有16 bit的short 型,32 bit的long型(要看具体的编译器),另外,对于位数大于8位的处理器,例如16位或者32位的处理器,由于寄存器宽度大于一个字节

    17810

    C语言--数据存储

    那么计算机为什么要这样存储? 在计算机系统,数值一律用补码来表示和存储。...原来,在计算机,内存存储数据,采用的是字节序的大小端存储模式。 什么是大小端?...大端(存储)模式,是指数据的低位保存在内存的高地址,而数据的高位,保存在内存的低地址 ; 小端(存储)模式,是指数据的低位保存在内存的低地址,而数据的高位,,保存在内存的高地 址。...但是在C语言中除了8 bit的char之外,还有16 bit的short型,32 bit的long型(要看具体的编译器),另外,对于位数大于8位的处理器,例如16位或者32位的处理器,由于寄存器宽度大于一个字节...、浮点型在内存存储 通过上面,我们知道,整数在计算机里面的存储方式是根据二进制的原、反、补码来存储和使用的。那么,浮点数,是否也是用原反补呢?如果是用原反补,那么它的小数点是什么样的形式?

    1.7K20

    C语言进阶】整型在内存存储

    这个系列,我们将探索C语言中更深层的内容! ---- 前言  在日常敲代码的过程,我们经常会使用整型常量来对变量进行赋值,但我们可能却没有考虑过不同的变量到底是如何存入内存!...----        2.整型在内存存储必须知道的基础知识(原反补码)     在内存,不管是正数还是负数,存储形式都是以补码的形式存储!!    ...首先,在内存存储时,我们都会存储整型的二进制。那么就用二进制来表示整型的原码,反码和补码啦!        计算机的整数有三种2进制表示方法,即原码、反码和补码。      ...1.大小端              我们可以发现,当存入内存时,int a和int b 不应该用二进制补码存储吗? ...总结 1.在内存,不管是正数还是负数,存储形式都是以补码的形式存储!!       2.一般情况下,int,char等整型通常是有符号数。

    88720

    C语言:数据在内存存储形式

    C语言:进制的转换以及原码、反码、补码 我们以整型在内存存储形式为基础,探究后面的内容:整型提升与截断、算数转换、大小端字节序和字节序判断、强制类型转换的原理、浮点数在内存存储!!...当长字节的数据类型用短字节的数据类型进行存储时,会发生截断,截断就是通过简单地将高位丢弃,保存低位来实现 补充一条知识: C语言规定,char类型默认是否带有正负号,由当前的系统决定,也就是说char类型可能等价于...⽆符号整数提升,⾼位补0 5.3 大小端和强制类型转换的关系 大小端(endianness)是指多字节数据在存储时的字节顺序。在C语言中,赋值操作是不受大小端影响的。...我们来看下面这个代码 我们会发现,当我们用int类型存储9,再用float类型取出9时,得到的结果是0.000000,而用float类型去存储9.0时,用int类型取出来时1091567616...关于浮点数的比较在 《C语言深度解剖》这本书中有介绍。

    17810

    C语言进阶-数据在内存存储

    目录 前言 数据类型 C语言基本的内置类型 类型的意义 类型的基本归类 整形在内存存储 原码、反码、补码 意义 大小端 什么是大端小端  为什么有大端和小端 一道笔试题 练习 浮点型在内存存储...常见的浮点数 浮点数存储  浮点数存储规则 IEEE 754规定 特别规定 指数E从内存取出 ---- 前言 ---- 本文主要讲解点 数据类型详细介绍 整形在内存存储:原码、反码、补码 大小端字节序介绍及判断...浮点型在内存存储解析 数据类型 ---- C语言基本的内置类型 char //字符数据类型 unsigned char //signed(有符号)/unsigned(无符号)...long //长整型 unsigned long signed long long long //更长的整形 float //单精度浮点数 double //双精度浮点数 //C语言有没有字符串类型...8 bit 而C语言中除了8 bit的char之外,还有其他类型(大于8bite)以及寄存器宽度不一样 必然会涉及存储时字节安排的问题,而并没有规定,也没有科学的理由说服彼此,就有大小端之分 注:char

    89130

    C语言——L数据在内存存储

    对于整形来说:数据存放内存其实存放的是补码。 为什么呢? 在计算机系统,数值⼀律⽤补码来表⽰和存储。...1、什么是大小端 其实超过⼀个字节的数据在内存存储的时候,就有存储顺序的问题,按照不同的存储顺序,我们分为⼤端字节序存储和⼩端字节序存储。...这是因为在计算机系统,我们是以字节为单位的,每个地址单元都对应着⼀个字节,⼀个字节为8bit位,但是在C语言中除了8 bit 的 char 之外,还有16 bit 的 short 型,32 bit 的...b8个比特位要发生截断所以只有 b = 11111111 // // unsigned char c = -1;//同a // //存储c8个比特位要发生截断所以只有 c = 11111111...例如,CC++ 的 char 类型通常是有符号的,所以其取值范围是 -128 到 127。而在很多其他语言中,比如 Java,char 类型是无符号的,所以其取值范围是 0 到 255。

    14910

    C语言基础】:数据在内存存储

    这里的数值的存储顺序是倒过来的。 造成这种情况的原因是因为超过一个字节的数据在内存存储的时候,就有储存顺序的问题,按照不同的存储顺序,我们分为大端字节序存储和小端字节序存储。...在计算机系统,我们是以字节为单位的,每个地址单元都对应着一个字节,一个字节为8个bit位,但是在C语言中除了了8 bit 的 char 之外,还有16 bit 的 short 型,32 bit 的 long...所以将 -1存入到char,会发生截断,有32位变成8位。-1的补码为32个1组成,截断后变为8个1。所以无论a、b、c是signed还是unsigned,其在内存中都是存的8个1。...printf打印a、b、c都是以**%d的形式打印,%d**是来打印有符号整型的(打印的是 原码),这里的a、b、c都是字符,要整型提升成整型后才能进行打印。...浮点数的存储 上面的代码, num 和 *pFloat 在内存明明是同⼀个数,为什么浮点数和整数的解读结果会差别这么大? 要理解这个结果,一定要搞懂浮点数在计算机内部的表示方法。

    21110

    C语言进阶——数据在内存存储

    ---- 前言   经过前面博客的介绍,我们的C语言初阶已经学完了。...现在我们可以进入更深层次的C语言世界了,而本文是我们进阶的首篇文章,主要是介绍各种数据在内存存储情况,比如有符号char的最大值是多少、整型数据与浮点型数据在内存的存储方式有何不同等,学会这些知识能增加我们的内功...---- 正文 我们C语言中的有七种基本数据类型,可以分为三种:整型、实型、字符型。...大端存储:指将数据高位次存放在内存的低地址,而低位次则是存放在内存的高地址  当为大端存储时,十六进制会正着显示小端存储:指将数据高位次存放在内存的高地址,而低位次则是存放在内存的低地址当为小端存储时...总的来说,无论是反码相加还是浮点数的存储,都是非常巧妙的设计,是无数前辈绞尽脑汁的最优解,正是因为有了这些规则,今天我们才能看到如此完善的C语言体系。

    16820

    C语言内功】“数据在内存存储

    int main() { char x = 'a'; printf("%c\n", x);//a printf("%d", x);//97 return 0; } 三.void *void表示空类型...2.小端(存储)模式,是指数据的高字节位保存在内存的高地址处,高位同理。...八.进制位 16进制位依次是0~15(0~9 a b c d e f) 0x是16进制位的标识 一个16进制位表示4个二进制位,两个16进制位为1个字节 两道例题体会“整型提升”“数据的截断”...4294967167(无负号) 128在一个有符号的char(-128~127)永远放不下 重点:strlen要关注到\0的字符,也就是ascall码值0;且是按照字节进行查找; 十.浮点型在内存存储...(三种情况) 情况一:E不全为0或不全为1 情况二:E全为0 情况三:E全为1 例题分析: 如何解释下面的代码结果 对于第二行出现0.000000分析:不难发现是E全为0的情况

    13510

    【熟视C语言C语言——带你深度刨析数据在内存存储

    类型的基本归类: 整型家族: char  unsigned char    //归为整型其中一种类型  signed char     //内存大小为一个字节 //C语言规定并未明确指出char的类型是有符号或无符号的...2.整型在内存存储 这里先看两个例子,在编译器创建这两个整型并赋值,开始调试并调用内存监视窗口,看看这两个量是如何存储在内存的。...而在计算机系统,数值一律用补码来表示和存储。...但是在C语言中除了8 bit的char之外,还有16 bit的short型,32 bit的long型(要看具体的编译器),另外,对于位数大于8位 的处理器,例如16位或者32位的处理器,由于寄存器宽度大于一个字节...所以数据存储存在两种模式: 大端(存储)模式,是指数据的低位保存在内存的高地址,而数据的高位,保存在内存的低地址; 小端(存储)模式,是指数据的低位保存在内存的低地址,而数据的高位,,保存在内存的高地址

    17620

    C语言进阶】数据如何安家?C语言内存存储艺术深度解析

    C语言,作为一门历史悠久且功能强大的编程语言,其直接操作内存的能力使得它在处理复杂数据结构和高性能数据存储方面展现出独特的优势。...因此,深入理解C语言中的数据存储机制,对于任何希望成为高效程序员或系统分析师的学习者而言,都是不可或缺的一步 本文旨在为读者揭开C语言数据存储的神秘面纱,从最基本的变量类型与内存分配讲起,我们将通过理论讲解与实例演示相结合的方式...,帮助读者构建扎实的C语言数据存储知识体系,掌握如何在C语言中高效、安全地处理各种类型的数据 让我们一同踏上这段探索C语言数据存储奥秘的旅程,开启编程世界的新篇章!...总结 在深入剖析C语言中数据在内存存储这一漫长而精妙的旅程即将画上句号之际,我们不禁为这一编程语言所展现出的底层魅力和强大能力所折服。...C语言中的数据存储与内存管理远不止于此。随着对C语言深入学习的推进,我们还将面临更多挑战与机遇,比如动态内存分配与释放、内存泄漏的检测与预防、缓冲区溢出的防范等。

    12210

    C语言】数据的存储

    一、整形在内存存储 1....大小端的存储模式 大端(存储)模式:是指数据的低位保存在内存的高地址,而数据的高位,保存在内存的低地址; eg:0x11223344 小端(存储)模式:是指数据的低位保存在内存的低地址,而数据的高位...,保存在内存的高地址; eg:0x44332211 写一个代码来判断当前机器的字节序: int cheak() { int a = 1; char* p = (char*)...拓展,short类型的有符号与无符号的取值范围: 二、浮点型在内存存储 1....= 9.0时,9.0以浮点数的存储模式存到内存,当以%d的形式打印时,会以整型数的解读方式解读9.0浮点数存储模式的二进制,所以是结果是1,091,567,616 int main()

    13110

    C语言之数据存储

    C语言中数据在内存存储 文章目录 C语言中数据在内存存储 1.数据类型的介绍 2.整形在内存存储 2.1原码,反码,补码 2.2大小端字节序 2.3试题练习 3.浮点数在内存存储...3.1.浮点数在计算机内部的表示方法 3.2.浮点数的存储规则 3.3.一个练习题 写在最后 1.数据类型的介绍 C语言中具体由哪些数据结构: ps: 1.这里需要提醒大家的就是其实char也是整形家族的...但是在C语言中除了8 bit的char之外,还有16 bit的short型,32 bit的long型(要看具体的编译器)。...("a=%d,b=%d,c=%d",a,b,c); return 0; } 代码分析: 我们已经知道,一个数是由符号位和数值位两部分组成。...C语言标准规定: 1.当一个数超过该类型数据所能存储的最大值就发生截断。如八个比特位的char存储32个比特位的int时只存储最后面的八个比特位。

    1.5K00

    C语言——数据的存储

    因为:char虽然是字符类型,但是字符类型储存的时候,存储的字符的ascii码值 ascii值是整数。...有正负的数据可以存放在有符号的变量 只有正数的数据可以存放在无符号的变量 浮点数家族:  构造类型:  指针类型 空类型 原码 反码 补码 计算机的整数有三种表示方法,即原码、反码和补码...反码:将原码的的符号位不变,其他位依次取反就可以得到了 补码:反码加一就是补码 对于整数来说,数据存放内存其实存放的是补码 大小端介绍 大端小端 大端(存储)模式,是指数据的低位保存在内存的高地址...,而数据的高位,保存在内存的低地址 ; 小端(存储)模式,是指数据的低位保存在内存的低地址,而数据的高位,,保存在内存的高地 址

    1.4K10

    C语言数据的存储

    signed int long unsigned long [int] signed long [int] 补充: char是signed char还是unsigned char,C语言标准并没有规定...整形在内存存储 一个变量的创建是要在内存开辟空间的。空间的大小是根据不同的类型而决定的。 int a = 20; int b = -10; 该段代码为 a 分配四个字节的空间。 那如何存储?...在内存存储: 可以看到对于a和b分别存储的是补码。但是我们发现顺序有点不对劲。 这是又为什么?...大小端介绍 什么大端小端: 大端(存储)模式,是指数据的低位保存在内存的高地址,而数据的高位,保存在内存的低地址; 小端(存储)模式,是指数据的低位保存在内存的低地址,而数据的高位,,保存在内存的高地址...但是在C语言中除了8 bit的char之外,还有16 bit的short型,32 bit的long型(要看具体的编译器),另外,对于位数大于8位的处理器,例如16位或者32位的处理器,由于寄存器宽度大于一个字节

    17210

    轻松拿捏C语言——【数据在内存存储

    对于整形来说:数据存放内存其实存放的是补码 二、大小端字节序及判断 其实超过⼀个字节的数据在内存存储的时候,就有存储顺序的问题,按照不同的存储顺序,我们分 为大端字节序存储和小端字节序存储 大端(存储...我们常用的 X86 结构是小端模式,而KEIL C51 则为大端模式。很多的ARM,DSP都为小端模式。有些ARM处理器还可以由硬件来选择是大端模式还是小端模式。...浮点数表示的范围: float.h 定义 下面来看一段代码: #include int main() { int n = 9; float* pFloat = (float*)...上面的代码, num 和 *pFloat 在内存明明是同⼀个数,为什么浮点数和整数的解读结果会差别这么大?...E全为1, 这时,如果有效数字M全为0,表示±无穷大(正负取决于符号位s); 所以回归到上面的那段代码: 为什么 9 还原成浮点数,就成了 0.000000 ?

    8710

    C语言】深度剖析数据在内存存储

    文章目录 数据类型的介绍 整形在内存存储 1、原码、反码、补码 2、大小端字节序 3、整形提升 4、整形提升练习题 5、剖析整形的取值范围 6、整形存储练习题 浮点数在内存存储 1、浮点数在计算机内部的表示方法...2、浮点数的存储规则 3、浮点数存储练习题 ---- 数据类型的介绍 C语言中有哪些数据类型: 数据类型的意义: 数据类型决定了数据在内存开辟空间的大小。...---- 整形在内存存储 我们知道,一个变量的创建是要在内存开辟空间的,而且所开辟空间的大小是根据不同的类型决定的,那么,数据在所开辟内存到底是如何存储的呢?接下来我们探讨这个问题。...(10分) 对于大端字节序和小端字节序的概念上面我们已经知道了,接下来就是设计一个代码来判断大小端字节序,代码实现: 代码分析: 在check_sys函数里面,我们先将a变量的地址强制类型转换为...C语言规定: 当一个数超过该类型数据所能存储的最大值时就发生截断; 当遇到10000000时,不做处理,直接翻译为负数的最大值 (-128); 下面我们画图来理解; 所以 signed

    64600

    #C语言 深度剖析整型在数据存储

    因为char在内存存储是先转换为ASCLL表值在进行存储,因为char在内存占一个字节,刚好对应ASCLL256个元素。...有符号型和无符号型:char在C语言中没有明确的规定,(和编译器有关,VS为无符号型char a=unsigned char a),其他类型都默认为有符号型。...3.大小端介绍: 大小端是一种存储模式,跟计算的硬件有关,不同的计算机存储模式可能不同。 大端模式:指数据的低位(个,十,百,千;低->高)存储在内存的高地址,而数据的高位,存储在内存的低地址。...小端模式:指数据的高位(个,十,百,千;低->高)存储在内存的高地址,而数据的低位,存储在内存的低地址。...下面给出代码检测电脑大小端模式: int main() {     int* a=1;     char* p = &a;     if (*p == 1) {         printf("小端")

    10210
    领券