当前位置: 首页 > news >正文

[C语言] 数据存储

类型意义:

        1.类型决定内存空间大小(大小决定了使用范围)

        2.如何看待内存空间的视角

类型分类

        整形

类型大小(字节)
short2
int4
long4
long8

        浮点型

类型大小(字节)
float4
double8
long double12

        构造类型

数组
结构性struct
联合union
枚举enum

         指针类型

         空类型

                void(表示空类型,无返回值)

原码、反码、补码

  •         计算机中的整形有符号数表示方法为 原码,补码,反码.
  •         均为符号位和数值位两部分,符号位都是用0表示"正",用1表示"负",首位为符号位
  •         三种表示方法各不相同
  •         无符号数 : 原码,反码,补码均相同.
  •         计算机存储的是 补码(可以将符号位和数值域统一处理,加法和减法统一处理,因为cpu只有加法器), 反码=补码-1,原码=反码按位取反,特殊的补码 10000000,原码为 -128
  • 无符号类型  unsigned    有符号  signed

原码:

        直接将二进制转按照正负数的形式 换为二进制就可以

反码

        原原码符号位不变,其他位依次按位取反即可

补码

        反码+1即可·

比如 : 

 int a=20;// 4字节 32bit

原码: 00010100(8个数表示20, 前面再加24个0)

补码,反码与 原码相同

int b=-10;//4字节 32bit

原码: 0000  1010(8个数表示10,前面加23个0,最前面符号位为1)

反码: 1111   0101(前面加23个1,最前面符号位为1)

补码: 1111(等于15)   0110(反码+1)

转换16进制位(4个2进制位转换为1个16进制位)   补码转换16进制:0x ffffff6

大小端介绍

什么是大小端:

大端(存储):  指数据的低位保存在内存的高地址中,而数据的高位,保存在内存的低地址中

小端(存储):  指数据的低位保存在内存的低地址中,而数据的高位,保存在内存的高地址中

低地址:   编号小的   

高地址 :  编号大的

如  0x  11 22 33 44   

地址: 由低到高

数据: 由高到低

        44为数据低位  ,  11为数据高位

        44为内存高地址  ,  11为内存低地址

大端存储:11 22 33 44(人为)

小端存储:44 33 22 11(计算机)

//判断当前字节序:

//思路: 内存以16进制存储,如果第一个字节为 相对应16进制数,就为小端存储 ,否则为大端.
//比如 int a =1;  16进制为 01 00 00 00 (小端)
//利用 char* 来 访问一个字节的内容,指针类型决定访问几个字节的数.

//代码如下:
 

int check()
{
int a=1;
return *(char* )&a;
// 取出a的地址,并把强制转换类型 为 char*(因为只需要访问字节),再解引用得到其中的数,并返回
}int main()
{
//返回1,小端
//返回0,大端int ret=check_sys();
if(ret==1)
{printf("小端");
}
else
{
printf("大端");
}}

例题1:

main()
{//数都为 -1,没赋值前补码都一致char a = -1;//原码:10000000000000000000000000000001//补码:11111111111111111111111111111111//输出为int.整形提升(按符号位补高位)//得补码:11111111111111111111111111111111(32)//为负数,原码输出还是 -1signed b = -1;//和a同理unsigned c = -1;//补码:111111111111111111111111 11111111//因为赋值类型为unsigned ,最高位为0,整形提升(按符号位补高位),//得新补码:0000000000000000000000 11111111(32)//此时为整数, 原反补码一致 为255printf("%d %d %d", a, b, c);}

例题2:

main(){//数都为 -1,没赋值前补码都一致char a = -128;//原码:100000000000000000000000 10000000//补码:111111111111111111111111 10000000//因为赋值类型为char.认为1为符号位(按符号位补高位)//得新补码:111111111111111111111111 10000000(32)//%u打印 打印十进制无符号数., 原反补码一致 为111111111111111111111111 10000000printf("%u", a);}

char 分析: 

有符号 char范围 : -128------127

无符号 char范围:   0-------255

有符号字符类型范围图:

例题3: 

main(){char a = 128;printf("%u", a);char b =- 128;printf("%u", b);
//输出一致
// a存不了128, 可以表示为 127+1=-128}

 例题4:(无符号 与 有符号 计算)

    

int i=-20;
unsigned j=10;
printf("%d",i+j);//-20的 补码
11111111 11111111 11111111 11101100 //10的 补码
000000 0000000 0000000 00001010结果:
11111111 1111111 11111111 11111010 补码
11111111 1111111 11111111 11110110 反码
00000000 0000000 00000000 00001001 原码  -10 

    例题5: (-1 补码 与  无符号数)

unsigned int i;
for(i=9;i>=0;i--)
{printf("%d",i)
}//无限循环//当循环到 -1 时,由于-1补码全为1, 赋值给i, i为 无符号数,修改最前面的1为0 ,将会变为一个超大的数.

例题6: (字符类型范围)

char a[1000];
int i;
for(i=0;i<1000;i++)
{a[i] = -1 - i;}
printf("%d", strlen(a));//参考上图 字符类型取值范围图,  
//当-1,-2.....到-128是,下一个数 为127,126,125.....,知道0,停止存储.
//字符类型范围 -128到127

例题7:

	unsigned char a[1000];int i;for(i=0;i<=255;i++){printf("hello");}//无符号数 取值范围 0-255 , 当i为255+1 时, 将会变为 0,从而无限循环

浮点 类型:

基础知识:

不带任何后缀的浮点型变量 默认double , 以f(F).l(L) 分别表示 float 和 long double 

float 表示 6个有效字符 , double 表示 15个 , long double 表示 18个.

浮点型 字面量,有且只有一个小数点,两侧至少一边有数字.

指数形式:

e(E)为底 为  十进制指数 如:2.87e-3  ,

以0x(0X)打头,p(P)分隔的 是以 2为底数的 16进制指数  如:0x2p3=16.0

相关文章:

[C语言] 数据存储

类型意义&#xff1a; 1.类型决定内存空间大小&#xff08;大小决定了使用范围&#xff09; 2.如何看待内存空间的视角 类型分类 整形 类型大小(字节)short2int4long4long8 浮点型 类型大小(字节)float4double8long double12 构造类型 数组结构性struct联合union枚举enum 指…...

LoadBalancer负载均衡服务调用

LoadBalancer负载均衡服务调用 1、Ribbon目前也进入维护 ​ Spring Cloud Ribbon是基于Netflix Ribbon实现的一套客户端 负载均衡的工具。 ​ 简单的说&#xff0c;Ribbon是Netflix发布的开源项目&#xff0c;主要功能是**提供客户端的软件负载均衡算法和服务调用。**Ribbon…...

YoloV8实战:YoloV8-World应用实战案例

摘要 YOLO-World模型确实是一个突破性的创新,它结合了YOLOv8框架的实时性能与开放式词汇检测的能力,为众多视觉应用提供了前所未有的解决方案。以下是对YOLO-World模型的进一步解读: 模型架构与功能 YOLO-World模型充分利用了YOLOv8框架的先进特性,并引入了开放式词汇检…...

Python 导入Excel三维坐标数据 生成三维曲面地形图(体) 5-1、线条平滑曲面且可通过面观察柱体变化(一)

环境和包: 环境 python:python-3.12.0-amd64包: matplotlib 3.8.2 pandas 2.1.4 openpyxl 3.1.2 scipy 1.12.0 代码: import pandas as pd import matplotlib.pyplot as plt from mpl_toolkits.mplot3d import Axes3D from scipy.interpolate import griddata fro…...

cmake初识

cmake 什么是软件构建和编译工具cmake安装cmakewindowsLinux 通过cmake编译代码准备CMakeLists.txt注释块状注释cmake_minimum_required:确定cmake的最低版本project&#xff1a;定义工程名称&#xff1a;add_executable&#xff1a;定义工程会生成一个可执行程序准备生成可执行…...

Swift 入门学习:集合(Collection)类型趣谈-下

概览 集合的概念在任何编程语言中都占有重要的位置&#xff0c;正所谓&#xff1a;“古来聚散地&#xff0c;宿昔长荆棘&#xff1b;游人聚散中&#xff0c;一片湖光里”。把那一片片、一瓣瓣、一粒粒“可耐”的小精灵全部收拢、吸纳的井然有序、条条有理&#xff0c;怎能不让…...

nova 12 LTPO来了!LTPO动态自适应刷新率屏120Hz体验更流畅 ,1Hz阅读更省电

2023年12月26日&#xff0c;华为召开华为冬季全场景发布会&#xff0c;正式发布华为nova 12系列。全新华为nova 12 Pro/Ultra 上搭载1~120Hz LTPO 动态自适应刷新率屏&#xff0c;作为华为旗舰系列的LTPO特性现在来到了nova 系列上&#xff0c;到底表现如何呢&#xff1f; 手机…...

【rk3368 android6.0 恢复出厂设置功能】

rk3368 android6.0 恢复出厂设置功能 恢复出厂设置三种方法一&#xff0c;设置--进入恢复出厂设置页面二&#xff0c;发送广播形式三&#xff0c;命令形式总结 郑重声明:本人原创博文&#xff0c;都是实战&#xff0c;均经过实际项目验证出货的 转载请标明出处:攻城狮2015 恢复…...

闲聊电脑(7)常见故障排查

闲聊电脑&#xff08;7&#xff09;常见故障排查 夜深人静&#xff0c;万籁俱寂&#xff0c;老郭趴在电脑桌上打盹&#xff0c;桌子上的小黄鸭和桌子旁的冰箱又开始窃窃私语…… 小黄鸭&#xff1a;冰箱大哥&#xff0c;平时遇到电脑故障该咋处理呢&#xff1f; 冰箱&#xf…...

Vim 编辑器|批量注释与批量取消注释

添加注释 ctrl v 进入块选泽模式。上下键选中需要注释的行。按大写 I &#xff08;shift i&#xff09; 进入插入模式&#xff0c;输入注释符。按两次 ESC 退出&#xff0c;即完成添加注释。shift : 再输入 qw 保存退出。 取消注释 ctrl v 进入块选泽模式。上下键选中…...

Android 使用AIDL HAL

生成的目录结构 以audioControl 为例: 首先编写的是aidl文件。 其文件目录结构是:── android │ └── hardware │ └── automotive │ └── audiocontrol │ ├── AudioFocusChange.aidl │ ├── AudioGainConf…...

C++的一些基础语法

前言&#xff1a; 本篇将结束c的一些基础的语法&#xff0c;方便在以后的博客中出现&#xff0c;后续的一些语法将在涉及到其它的内容需要用到的时候具体展开介绍&#xff1b;其次&#xff0c;我们需要知道c是建立在c的基础上的&#xff0c;所以c的大部分语法都能用在c上。 目…...

mysql 技术100问?

什么是软件架构&#xff1f;它的定义和目的是什么&#xff1f;软件架构设计的基本原则是什么&#xff1f;请解释一下模块化架构和分层架构的区别。为什么重视可伸缩性在软件架构中的作用&#xff1f;请讨论一下微服务架构和单体应用架构的区别和优劣。如何选择适合项目的软件架…...

APK漏洞扫描工具

一、APKDeepLens是一个基于python的工具&#xff0c;旨在扫描Android应用程序&#xff0c;专门针对OWASP TOP 10移动漏洞。 工具&#xff1a;python3.8或者以上版本 安装 git clone https://github.com/d78ui98/APKDeepLens/tree/main cd /APKDeepLens python3 -m venv venv…...

ReactNative项目构建分析与思考之react-native-gradle-plugin

前一段时间由于业务需要&#xff0c;接触了下React Native相关的知识&#xff0c;以一个Android开发者的视角&#xff0c;对React Native 项目组织和构建流程有了一些粗浅的认识&#xff0c;同时也对RN混合开发项目如何搭建又了一点小小的思考。 RN环境搭建 RN文档提供了两种…...

LeetCode454 四数相加

给你四个整数数组 nums1、nums2、nums3 和 nums4 &#xff0c;数组长度都是 n &#xff0c;请你计算有多少个元组 (i, j, k, l) 能满足&#xff1a; 0 < i, j, k, l < n nums1[i] nums2[j] nums3[k] nums4[l] 0 示例 1&#xff1a; 输入&#xff1a;nums1 [1,2], nu…...

Kafka消费者重平衡

「&#xff08;重平衡&#xff09;Rebalance本质上是一种协议&#xff0c;规定了一个Consumer Group下的所有Consumer如何达成一致&#xff0c;来分配订阅Topic的每个分区」。 比如某个Group下有20个Consumer实例&#xff0c;它订阅了一个具有100个分区的Topic。 正常情况下&…...

【线代基础】张量、向量、标量、矩阵的区别

1、标量&#xff08;Scalar&#xff09; 纯数字&#xff0c;无方向性、无维度概念。因此也叫 标量张量、零维张量、0D张量 例如&#xff0c;x18&#xff0c;x21.34 x1、x2即为标量 2、张量&#xff08;tensor&#xff09; 具有方向性&#xff0c;可以理解为一个多维数组&a…...

用chatgpt写论文重复率高吗?如何降低重复率?

ChatGPT写的论文重复率很低 ChatGPT写作是基于已有的语料库和文献进行训练的&#xff0c;因此在写作过程中会不可避免地引用或借鉴已有的研究成果和观点。同时&#xff0c;由于ChatGPT的表述方式和写作风格与人类存在一定的差异&#xff0c;也可能会导致论文与其他文章相似度高…...

字节跳动也启动春季校园招聘了(含二面算法原题)

字节跳动 - 春招启动 随着各个大厂陆续打响春招的响头炮&#xff0c;字节跳动也官宣了春季校园招聘的正式开始。 还是那句话&#xff1a;连互联网大厂启动校招计划尚且争先恐后&#xff0c;你还有什么理由不马上行动&#xff1f;&#xff01; 先来扫一眼「春招流程」和「面向群…...

光效崩坏?噪点泛滥?色温漂移?——Midjourney专业级光效渲染全流程校准协议,含ACEScg色彩空间适配模板

更多请点击&#xff1a; https://kaifayun.com 第一章&#xff1a;光效崩坏、噪点泛滥与色温漂移的系统性归因诊断 图像采集链路中出现的光效崩坏、噪点泛滥与色温漂移并非孤立现象&#xff0c;而是光学设计、传感器响应、ISP管线调度及环境耦合失配共同作用的结果。三者常呈现…...

《我看见的世界:李飞飞自传》第1-6章阅读笔记:从移民少女到AI教母的“看见“之旅

前言 当我们谈论人工智能时&#xff0c;我们谈论的是算法、数据、算力&#xff0c;是那些冰冷的代码和复杂的模型。但在《我看见的世界&#xff1a;李飞飞自传》中&#xff0c;李飞飞用她独特的视角告诉我们&#xff1a;AI的本质&#xff0c;是人类对"看见"世界的渴望…...

MongoDB Limit 与 Skip 方法详解

MongoDB Limit 与 Skip 方法详解 引言 MongoDB 是一个高性能、可伸缩的文档存储系统,它提供了强大的数据存储和查询功能。在处理大量数据时,Limit 与 Skip 方法是 MongoDB 中常用的查询优化工具。本文将详细介绍 MongoDB 中的 Limit 与 Skip 方法,包括其基本用法、性能影响…...

举一个具体例子说明为什么索引不是越多越好,举具体字段

文章目录1. 核心舞台&#xff1a;笔记表 (t_note) 结构设计&#x1f6a8; 错误的操作&#xff1a;2. 结合具体字段&#xff0c;拆解三大翻车现场现场一&#xff1a;给 view_count&#xff08;浏览量&#xff09;加索引 —— 导致写放大&#xff0c;拖垮数据库现场二&#xff1a…...

双稳健机器学习:用正交性与交叉拟合解决因果推断中的ML偏差

1. 项目概述&#xff1a;当机器学习遇见因果推断的“干扰”难题在实证研究的日常工作中&#xff0c;我们常常面临一个核心矛盾&#xff1a;我们真正关心的&#xff0c;往往只是一个或几个关键参数——比如一项政策对就业率的平均影响&#xff08;平均处理效应&#xff0c;ATE&a…...

企业内统一API网关与Taotoken聚合平台对接方案

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 企业内统一API网关与Taotoken聚合平台对接方案 在推进AI应用落地的过程中&#xff0c;许多中大型企业面临一个共同挑战&#xff1a…...

5个必知的Universal-Updater高级功能:从QR扫描到后台安装

5个必知的Universal-Updater高级功能&#xff1a;从QR扫描到后台安装 【免费下载链接】Universal-Updater An easy to use app for installing and updating 3DS homebrew 项目地址: https://gitcode.com/gh_mirrors/un/Universal-Updater Universal-Updater是一款专为任…...

通过用量看板分析团队大模型API消耗发现优化调用策略的机会

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 通过用量看板分析团队大模型API消耗发现优化调用策略的机会 作为团队的技术负责人&#xff0c;确保大模型API调用在满足业务需求的…...

别再手动测模型了!用Simulink Test Manager实现自动化测试(附Excel表格配置详解)

从手动测试到智能验证&#xff1a;Simulink Test Manager全流程自动化实战指南 在模型开发的迭代过程中&#xff0c;工程师们常常陷入"修改-测试-记录"的循环泥潭。每次参数调整后&#xff0c;手动运行模型、记录数据、比对结果不仅消耗大量时间&#xff0c;更可能因…...

告别手动预约:i茅台自动预约系统5分钟部署指南

告别手动预约&#xff1a;i茅台自动预约系统5分钟部署指南 【免费下载链接】campus-imaotai i茅台app自动预约&#xff0c;每日自动预约&#xff0c;支持docker一键部署&#xff08;本项目不提供成品&#xff0c;使用的是已淘汰的算法&#xff09; 项目地址: https://gitcode…...