C语言 — 数据在内存中的存储(1)

简介: 近期会更新整形和浮点型在内存中的存储方式,本文是对整形在内存中存储进行介绍。如果有帮助,还请各位小伙伴多多点赞关注收藏,后期会持续进行更新!!!本文内容数据类型详细介绍整形在内存中的存储:原码、反码、补码大小端字节序介绍及判断浮点型在内存中的存储解析

前言

image.png

本文内容


image.png

文章目录

前言

本文内容

一、类型的基本归类

1.整形类型

2.浮点数类型

3.指针类型

4.构造体类型

5.空类型

二、整形在内存中的存储方式

1.原码 反码 补码

原码

反码

补码

2.补码转为原码的两种方式

第一种

第二种

3.大小端存储模式

大端字节序

小端字节序

三、完结


一、类型的基本归类


1.整形类型

整形类型分为有符号、无符号两类

image.png

char 类型


char//char = signed charsignedchar//有符号字符类型    unsignedchar//无符号字符类型

short 类型


short//short = signed shortsignedshort//有符号短整型类型unsignedshort//无符号短整形类型

int 类型


int//int = signed intsignedint//有符号整形类型unsignedint//无符号整形类型

long 类型


long//long = signed longsignedlong//有符号长整型类型unsignedlong//无符号长整形类型

2.浮点数类型

float//单精度浮点型double//双精度浮点型

3.指针类型

int*//整形指针类型char*//字符指针类型float*//浮点型指针类型void*//空指针类型

4.构造体类型

arr[]              //数组类型 struct//结构体类型enum//枚举类型union//联合类型

5.空类型

void//void表示空类型  通常应用于函数的返回类型、函数的参数、指针类型

二、整形在内存中的存储方式


1.原码 反码 补码

计算机中的整数有三种2进制表示方法,即原码反码补码

三种表示方法均有符号位和数值位两部分,符号位都是用0表示“正”,用1表示“负”,而数值位


image.png

image.png

原码

image.png

反码

image.png

补码

image.png

2.补码转为原码的两种方式


第一种

image.png

image.png

第二种

image.png

image.png

3.大小端存储模式


字节序是指多字节数据在内存或网络传输过程中的存储顺序。由于计算机硬件和软件的不同,字节序也会有不同的表示方式,主要分为大端字节序和小端字节序。


大端字节序

image.png

小端字节序

image.png

这里设计一个程序来识别当前机器的字节序

#define _CRT_SECURE_NO_WARNINGS 1#include<stdio.h>voidestimate(intx)
{
if (x==1)
    {
printf("小端");
    }
else    {
printf("大端");
    }
}
intmain()
{
inta=1;
char*p= (char*)&a;
estimate(*p);
return0;
}

三、完结

image.png

目录
相关文章
|
8天前
|
存储 编译器 C语言
C语言存储类详解
在 C 语言中,存储类定义了变量的生命周期、作用域和可见性。主要包括:`auto`(默认存储类,块级作用域),`register`(建议存储在寄存器中,作用域同 `auto`,不可取地址),`static`(生命周期贯穿整个程序,局部静态变量在函数间保持值,全局静态变量限于本文件),`extern`(声明变量在其他文件中定义,允许跨文件访问)。此外,`typedef` 用于定义新数据类型名称,提升代码可读性。 示例代码展示了不同存储类变量的使用方式,通过两次调用 `function()` 函数,观察静态变量 `b` 的变化。合理选择存储类可以优化程序性能和内存使用。
133 82
|
9天前
|
存储 人工智能 C语言
数据结构基础详解(C语言): 栈的括号匹配(实战)与栈的表达式求值&&特殊矩阵的压缩存储
本文首先介绍了栈的应用之一——括号匹配,利用栈的特性实现左右括号的匹配检测。接着详细描述了南京理工大学的一道编程题,要求判断输入字符串中的括号是否正确匹配,并给出了完整的代码示例。此外,还探讨了栈在表达式求值中的应用,包括中缀、后缀和前缀表达式的转换与计算方法。最后,文章介绍了矩阵的压缩存储技术,涵盖对称矩阵、三角矩阵及稀疏矩阵的不同压缩存储策略,提高存储效率。
|
11天前
|
存储 算法 C语言
数据结构基础详解(C语言): 二叉树的遍历_线索二叉树_树的存储结构_树与森林详解
本文从二叉树遍历入手,详细介绍了先序、中序和后序遍历方法,并探讨了如何构建二叉树及线索二叉树的概念。接着,文章讲解了树和森林的存储结构,特别是如何将树与森林转换为二叉树形式,以便利用二叉树的遍历方法。最后,讨论了树和森林的遍历算法,包括先根、后根和层次遍历。通过这些内容,读者可以全面了解二叉树及其相关概念。
|
11天前
|
存储 机器学习/深度学习 C语言
数据结构基础详解(C语言): 树与二叉树的基本类型与存储结构详解
本文介绍了树和二叉树的基本概念及性质。树是由节点组成的层次结构,其中节点的度为其分支数量,树的度为树中最大节点度数。二叉树是一种特殊的树,其节点最多有两个子节点,具有多种性质,如叶子节点数与度为2的节点数之间的关系。此外,还介绍了二叉树的不同形态,包括满二叉树、完全二叉树、二叉排序树和平衡二叉树,并探讨了二叉树的顺序存储和链式存储结构。
|
11天前
|
C语言
C语言程序设计核心详解 第二章:数据与数据类型 4种常量详解 常见表达式详解
本文详细介绍了C语言中的数据与数据类型,包括常量、变量、表达式和函数等内容。常量分为整型、实型、字符型和字符串常量,其中整型常量有十进制、八进制和十六进制三种形式;实型常量包括小数和指数形式;字符型常量涵盖常规字符、转义字符及八进制、十六进制形式;字符串常量由双引号括起。变量遵循先定义后使用的规则,并需遵守命名规范。函数分为标准函数和自定义函数,如`sqrt()`和`abs()`。表达式涉及算术、赋值、自增自减和逗号运算符等,需注意运算符的优先级和结合性。文章还介绍了强制类型转换及隐式转换的概念。
|
11天前
|
存储 算法 C语言
C语言手撕数据结构代码_顺序表_静态存储_动态存储
本文介绍了基于静态和动态存储的顺序表操作实现,涵盖创建、删除、插入、合并、求交集与差集、逆置及循环移动等常见操作。通过详细的C语言代码示例,展示了如何高效地处理顺序表数据结构的各种问题。
|
17天前
|
存储 大数据 C语言
C语言 内存管理
本文详细介绍了内存管理和相关操作函数。首先讲解了进程与程序的区别及进程空间的概念,接着深入探讨了栈内存和堆内存的特点、大小及其管理方法。在堆内存部分,具体分析了 `malloc()`、`calloc()`、`realloc()` 和 `free()` 等函数的功能和用法。最后介绍了 `memcpy`、`memmove`、`memcmp`、`memchr` 和 `memset` 等内存操作函数,并提供了示例代码。通过这些内容,读者可以全面了解内存管理的基本原理和实践技巧。
|
17天前
|
缓存 Linux C语言
C语言 多进程编程(六)共享内存
本文介绍了Linux系统下的多进程通信机制——共享内存的使用方法。首先详细讲解了如何通过`shmget()`函数创建共享内存,并提供了示例代码。接着介绍了如何利用`shmctl()`函数删除共享内存。随后,文章解释了共享内存映射的概念及其实现方法,包括使用`shmat()`函数进行映射以及使用`shmdt()`函数解除映射,并给出了相应的示例代码。最后,展示了如何在共享内存中读写数据的具体操作流程。
|
17天前
|
存储 缓存 程序员
c语言的存储类型-存储类
本文详细介绍了C语言中的存储类型及其分类,包括基本类型(如整型、浮点型)和复合类型(如数组、结构体)。重点讲解了不同存储类别(`auto`、`static`、`register`、`extern`、`typedef`、`volatile`、`const`)的特点及应用场景,并展示了C11/C99引入的新关键字(如`_Alignas`、`_Atomic`等)。通过示例代码解释了每个存储类别的具体用法,帮助读者更好地理解和运用这些概念。
|
22天前
|
存储 监控 Docker
如何限制docker使用的cpu,内存,存储
如何限制docker使用的cpu,内存,存储