当前位置: 首页 > 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; 先来扫一眼「春招流程」和「面向群…...

Prompt Tuning、P-Tuning、Prefix Tuning的区别

一、Prompt Tuning、P-Tuning、Prefix Tuning的区别 1. Prompt Tuning(提示调优) 核心思想:固定预训练模型参数,仅学习额外的连续提示向量(通常是嵌入层的一部分)。实现方式:在输入文本前添加可训练的连续向量(软提示),模型只更新这些提示参数。优势:参数量少(仅提…...

ubuntu搭建nfs服务centos挂载访问

在Ubuntu上设置NFS服务器 在Ubuntu上&#xff0c;你可以使用apt包管理器来安装NFS服务器。打开终端并运行&#xff1a; sudo apt update sudo apt install nfs-kernel-server创建共享目录 创建一个目录用于共享&#xff0c;例如/shared&#xff1a; sudo mkdir /shared sud…...

VB.net复制Ntag213卡写入UID

本示例使用的发卡器&#xff1a;https://item.taobao.com/item.htm?ftt&id615391857885 一、读取旧Ntag卡的UID和数据 Private Sub Button15_Click(sender As Object, e As EventArgs) Handles Button15.Click轻松读卡技术支持:网站:Dim i, j As IntegerDim cardidhex, …...

Xshell远程连接Kali(默认 | 私钥)Note版

前言:xshell远程连接&#xff0c;私钥连接和常规默认连接 任务一 开启ssh服务 service ssh status //查看ssh服务状态 service ssh start //开启ssh服务 update-rc.d ssh enable //开启自启动ssh服务 任务二 修改配置文件 vi /etc/ssh/ssh_config //第一…...

安宝特方案丨XRSOP人员作业标准化管理平台:AR智慧点检验收套件

在选煤厂、化工厂、钢铁厂等过程生产型企业&#xff0c;其生产设备的运行效率和非计划停机对工业制造效益有较大影响。 随着企业自动化和智能化建设的推进&#xff0c;需提前预防假检、错检、漏检&#xff0c;推动智慧生产运维系统数据的流动和现场赋能应用。同时&#xff0c;…...

家政维修平台实战20:权限设计

目录 1 获取工人信息2 搭建工人入口3 权限判断总结 目前我们已经搭建好了基础的用户体系&#xff0c;主要是分成几个表&#xff0c;用户表我们是记录用户的基础信息&#xff0c;包括手机、昵称、头像。而工人和员工各有各的表。那么就有一个问题&#xff0c;不同的角色&#xf…...

相机Camera日志分析之三十一:高通Camx HAL十种流程基础分析关键字汇总(后续持续更新中)

【关注我,后续持续新增专题博文,谢谢!!!】 上一篇我们讲了:有对最普通的场景进行各个日志注释讲解,但相机场景太多,日志差异也巨大。后面将展示各种场景下的日志。 通过notepad++打开场景下的日志,通过下列分类关键字搜索,即可清晰的分析不同场景的相机运行流程差异…...

Axios请求超时重发机制

Axios 超时重新请求实现方案 在 Axios 中实现超时重新请求可以通过以下几种方式&#xff1a; 1. 使用拦截器实现自动重试 import axios from axios;// 创建axios实例 const instance axios.create();// 设置超时时间 instance.defaults.timeout 5000;// 最大重试次数 cons…...

Map相关知识

数据结构 二叉树 二叉树&#xff0c;顾名思义&#xff0c;每个节点最多有两个“叉”&#xff0c;也就是两个子节点&#xff0c;分别是左子 节点和右子节点。不过&#xff0c;二叉树并不要求每个节点都有两个子节点&#xff0c;有的节点只 有左子节点&#xff0c;有的节点只有…...

基于Java+MySQL实现(GUI)客户管理系统

客户资料管理系统的设计与实现 第一章 需求分析 1.1 需求总体介绍 本项目为了方便维护客户信息为了方便维护客户信息&#xff0c;对客户进行统一管理&#xff0c;可以把所有客户信息录入系统&#xff0c;进行维护和统计功能。可通过文件的方式保存相关录入数据&#xff0c;对…...