新闻详情

新闻详情

首页 / 资讯中心 / 详情

C语言二刷强化(数据在内存中的存储)

发布时间:2026/9/29 6:59:45来源:尧图网络
C语言二刷强化(数据在内存中的存储)
目录1. 整数在内存中的存储2. 大小端字节序和字节序判断3. 浮点数在内存中的存储1. 整数在内存中的存储整数的 2 进制表示方法有三种即原码、反码和补码。有符号的整数三种表示方法均有符号位和数值位两部分符号位都是用 0 表示“正”用 1 表示“负”最高位的一位是被当作符号位剩余的都是数值位。正整数的原、反、补码都相同。负整数的三种表示方法各不相同。原码直接将数值按照正负数的形式翻译成二进制得到的就是原码。反码将原码的符号位不变其他位依次按位取反就可以得到反码。补码反码 1 就得到补码。对于整型来说数据存放内存中其实存放的是二进制的补码。2. 大小端字节序和字节序判断2.1 什么是大小端其实超过一个字节的数据在内存中存储的时候就有存储顺序的问题按照不同的存储顺序我们分为大端字节序存储和小端字节序存储下面是具体的概念举个例子 int a 0x11223344; 大端存储 11 22 33 44 小端存储 44 33 22 11 地址 低 ------- 高2.3 练习2.3.1 判断大小端字节存储#include stdio.h int check_sys() { int i 1; return (*(char *)i); } int main() { int ret check_sys(); if (ret 1) { printf(小端\n); } else { printf(大端\n); } return 0; }#include stdio.h int main() { char a -1; // 10000000 000000000 00000000 00000001 -1 的原码 // 11111111 111111111 11111111 11111110 // 11111111 111111111 11111111 11111111 -1 的补码在这个时候 -1 存放到 a 里 // a 里存储的是 11111111 signed char b -1; unsigned char c -1; printf(a %d, b %d, c %d, a, b, c); // -1, -1, 255 // %d 是以十进制打印一个有符号数所以对 char 类型进行整型提升前面全按符号位补 // 11111111 11111111 11111111 11111111 a 经过整型提升的补码就是这样 // 取反加一得到原码打印 // b 和 a 同理 // unsigned 进行整型提升 // 00000000 00000000 00000000 11111111 // 那对于 %d符号位是 0所以认为是正数原反补相同直接打印为 255 return 0; }#include stdio.h int main() { char a -128; // 10000000 00000000 00000000 10000000 // 11111111 11111111 11111111 01111111 // 11111111 11111111 11111111 10000000 // a 存储的就是 -- 10000000 printf(%u\n, a); // 4294967168 // %u 打印进行整型提升 // 11111111 11111111 11111111 1000000 // 对于 %u 来说不分正负不存在符号位直接当正数打印 return 0; }#include stdio.h int main() { char a 128; // 00000000 00000000 00000000 10000000 // a -- 10000000 printf(%u\n, a); // %u 打印进行整形提升 // 11111111 11111111 11111111 10000000 // 对于 %u 来说不分正负不存在符号位直接当正数打印 return 0; }#include stdio.h #include string.h int main() { char a[1000]; int i; for (i 0; i 1000; i) { a[i] -1 - i; } /* 当 i 127 时a[127] -128此时到达了 char 的最小值 当 i 128 时-1 - 128 -129。由于 char 只有 8 位-129 超出了范围发生了下溢。 在二进制补码中-129 截断为 8 位变成了 12701111111。 此后值开始在 127 往下递减127, 126, 125... 当 i 255 时-1 - 255 -256。 -256 的二进制补码9位是 1 0000 0000截断为 8 位后变成 0000 0000也就是整数 0即 \0。 */ printf(%d, strlen(a)); return 0; }#include stdio.h //X86环境,⼩端字节序 int main() { int a[4] { 1, 2, 3, 4 }; int* ptr1 (int*)(a 1); int* ptr2 (int*)((int)a 1); printf(%x, %x, ptr1[-1], *ptr2);//02 00 00 00, %x 是以16进制打印 return 0; }3. 浮点数在内存中的存储#include stdio.h int main() { int n 9; // 00000000 00000000 00000000 000010001 源反补 // 0 00000000 00000000000000000001001 // (-1)^0 * 0.00000000000000000001001 * 2^-126 float* pFloat (float*)n; printf(n的值为: %d\n, n); printf(*pFloat的值为: %f\n, *pFloat); *pFloat 9.0; // (-1)^0 *1.001 * 2^3 // 0 10000010 00100000000000000000000 printf(n的值为: %d\n, n); // %d打印的时候认为存的是补码 printf(*pFloat的值为: %f\n, *pFloat); return 0; }// 举例子 // 5.0 的存储101 // (-1)^0 * 1.01 * 2^2 // // 5.5 的存储101.10.1 表示 0.5 // (-1)^0 * 1.011 * 2^2
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

电热综合能源系统日前经济调度:从CHP耦合建模到可再生能源消纳的Matlab实现 2026/9/29 7:55:54

电热综合能源系统日前经济调度:从CHP耦合建模到可再生能源消纳的Matlab实现

1. 问题背景与模型核心思路1.1 为什么要研究电热综合能源系统的日前调度做电力系统优化调度的同行应该都有体会,传统的经济调度模型基本是围绕纯电力系统展开的——机组组合、备用安排、潮流约束,这些内容在各类教材和论文里已经很成熟。但最近几年&…

阅读更多 →
Claude Code与Codex分工实战:AI说完成不等于代码可以提交 2026/9/29 7:55:54

Claude Code与Codex分工实战:AI说完成不等于代码可以提交

最近我的终端里同时跑着 Claude Code 和 Codex。用了一段时间之后,我发现两个问题必须拿出来聊聊:这两个工具到底怎么分工?以及一个更隐蔽的坑——AI agent 在对话框里打出“任务已完成”之后,很多人顺手就把代码 push 上去了&…

阅读更多 →
Windows下Ubuntu 20.04/18.04三系统安装与GRUB实战 2026/9/29 7:55:54

Windows下Ubuntu 20.04/18.04三系统安装与GRUB实战

Ubuntu 20.04 和 18.04 这两个版本放在同一台 Windows 机器上,听起来像是折腾,但在实际工作里这种需求一点都不少见。有人是为了跑 ROS Noetic(20.04 是官方主推)同时又要兼容某个只在 18.04 上编译通过的老项目;有人是…

阅读更多 →
Postman响应面板详解:从状态码到Tests断言,高效排查接口问题 2026/9/29 7:55:54

Postman响应面板详解:从状态码到Tests断言,高效排查接口问题

1. 响应面板整体布局:拿到一次请求结果后先看哪里如果你已经把 Postman 系列从头跟到这里,大概率已经会用 Postman 发 GET、POST 请求,也会配置 Header、Body、Params 了。但很多人在发出请求之后,盯着右侧的响应区一脸懵——信息…

阅读更多 →
计算机网络基础IP地址PPT课件:从二进制到子网划分的完整讲解路径 2026/9/29 7:55:47

计算机网络基础IP地址PPT课件:从二进制到子网划分的完整讲解路径

简介:这份PPT课件面向计算机网络入门学习者与课堂教学场景,系统梳理IP地址相关知识,帮助读者建立从地址结构到子网划分的完整认知。课件共14页,围绕点分十进制与二进制互转、IP地址的Network ID与Host ID组成、A至E五类地址划分、…

阅读更多 →
基于Springboot的二手车交易网站的设计与实现 2026/9/29 7:55:47

基于Springboot的二手车交易网站的设计与实现

温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 1. 项目背景与意义 随着汽车保有量的持续增长和消费观念的转变,二手车交易市场呈现出快速发展的态势。传统的线下二手车交易存在信息不对称、车源分散、交易…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉