[C语言] 数据存储
类型意义:
1.类型决定内存空间大小(大小决定了使用范围)
2.如何看待内存空间的视角
类型分类
整形
类型 | 大小(字节) |
short | 2 |
int | 4 |
long | 4 |
long | 8 |
浮点型
类型 | 大小(字节) |
float | 4 |
double | 8 |
long double | 12 |
构造类型
数组 | |
结构性 | 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语言] 数据存储
类型意义: 1.类型决定内存空间大小(大小决定了使用范围) 2.如何看待内存空间的视角 类型分类 整形 类型大小(字节)short2int4long4long8 浮点型 类型大小(字节)float4double8long double12 构造类型 数组结构性struct联合union枚举enum 指…...

LoadBalancer负载均衡服务调用
LoadBalancer负载均衡服务调用 1、Ribbon目前也进入维护 Spring Cloud Ribbon是基于Netflix Ribbon实现的一套客户端 负载均衡的工具。 简单的说,Ribbon是Netflix发布的开源项目,主要功能是**提供客户端的软件负载均衡算法和服务调用。**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:定义工程名称:add_executable:定义工程会生成一个可执行程序准备生成可执行…...

Swift 入门学习:集合(Collection)类型趣谈-下
概览 集合的概念在任何编程语言中都占有重要的位置,正所谓:“古来聚散地,宿昔长荆棘;游人聚散中,一片湖光里”。把那一片片、一瓣瓣、一粒粒“可耐”的小精灵全部收拢、吸纳的井然有序、条条有理,怎能不让…...

nova 12 LTPO来了!LTPO动态自适应刷新率屏120Hz体验更流畅 ,1Hz阅读更省电
2023年12月26日,华为召开华为冬季全场景发布会,正式发布华为nova 12系列。全新华为nova 12 Pro/Ultra 上搭载1~120Hz LTPO 动态自适应刷新率屏,作为华为旗舰系列的LTPO特性现在来到了nova 系列上,到底表现如何呢? 手机…...

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

闲聊电脑(7)常见故障排查
闲聊电脑(7)常见故障排查 夜深人静,万籁俱寂,老郭趴在电脑桌上打盹,桌子上的小黄鸭和桌子旁的冰箱又开始窃窃私语…… 小黄鸭:冰箱大哥,平时遇到电脑故障该咋处理呢? 冰箱…...
Vim 编辑器|批量注释与批量取消注释
添加注释 ctrl v 进入块选泽模式。上下键选中需要注释的行。按大写 I (shift i) 进入插入模式,输入注释符。按两次 ESC 退出,即完成添加注释。shift : 再输入 qw 保存退出。 取消注释 ctrl v 进入块选泽模式。上下键选中…...
Android 使用AIDL HAL
生成的目录结构 以audioControl 为例: 首先编写的是aidl文件。 其文件目录结构是:── android │ └── hardware │ └── automotive │ └── audiocontrol │ ├── AudioFocusChange.aidl │ ├── AudioGainConf…...

C++的一些基础语法
前言: 本篇将结束c的一些基础的语法,方便在以后的博客中出现,后续的一些语法将在涉及到其它的内容需要用到的时候具体展开介绍;其次,我们需要知道c是建立在c的基础上的,所以c的大部分语法都能用在c上。 目…...
mysql 技术100问?
什么是软件架构?它的定义和目的是什么?软件架构设计的基本原则是什么?请解释一下模块化架构和分层架构的区别。为什么重视可伸缩性在软件架构中的作用?请讨论一下微服务架构和单体应用架构的区别和优劣。如何选择适合项目的软件架…...
APK漏洞扫描工具
一、APKDeepLens是一个基于python的工具,旨在扫描Android应用程序,专门针对OWASP TOP 10移动漏洞。 工具:python3.8或者以上版本 安装 git clone https://github.com/d78ui98/APKDeepLens/tree/main cd /APKDeepLens python3 -m venv venv…...

ReactNative项目构建分析与思考之react-native-gradle-plugin
前一段时间由于业务需要,接触了下React Native相关的知识,以一个Android开发者的视角,对React Native 项目组织和构建流程有了一些粗浅的认识,同时也对RN混合开发项目如何搭建又了一点小小的思考。 RN环境搭建 RN文档提供了两种…...
LeetCode454 四数相加
给你四个整数数组 nums1、nums2、nums3 和 nums4 ,数组长度都是 n ,请你计算有多少个元组 (i, j, k, l) 能满足: 0 < i, j, k, l < n nums1[i] nums2[j] nums3[k] nums4[l] 0 示例 1: 输入:nums1 [1,2], nu…...

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

【线代基础】张量、向量、标量、矩阵的区别
1、标量(Scalar) 纯数字,无方向性、无维度概念。因此也叫 标量张量、零维张量、0D张量 例如,x18,x21.34 x1、x2即为标量 2、张量(tensor) 具有方向性,可以理解为一个多维数组&a…...

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

字节跳动也启动春季校园招聘了(含二面算法原题)
字节跳动 - 春招启动 随着各个大厂陆续打响春招的响头炮,字节跳动也官宣了春季校园招聘的正式开始。 还是那句话:连互联网大厂启动校招计划尚且争先恐后,你还有什么理由不马上行动?! 先来扫一眼「春招流程」和「面向群…...

label-studio的使用教程(导入本地路径)
文章目录 1. 准备环境2. 脚本启动2.1 Windows2.2 Linux 3. 安装label-studio机器学习后端3.1 pip安装(推荐)3.2 GitHub仓库安装 4. 后端配置4.1 yolo环境4.2 引入后端模型4.3 修改脚本4.4 启动后端 5. 标注工程5.1 创建工程5.2 配置图片路径5.3 配置工程类型标签5.4 配置模型5.…...

遍历 Map 类型集合的方法汇总
1 方法一 先用方法 keySet() 获取集合中的所有键。再通过 gey(key) 方法用对应键获取值 import java.util.HashMap; import java.util.Set;public class Test {public static void main(String[] args) {HashMap hashMap new HashMap();hashMap.put("语文",99);has…...

STM32F4基本定时器使用和原理详解
STM32F4基本定时器使用和原理详解 前言如何确定定时器挂载在哪条时钟线上配置及使用方法参数配置PrescalerCounter ModeCounter Periodauto-reload preloadTrigger Event Selection 中断配置生成的代码及使用方法初始化代码基本定时器触发DCA或者ADC的代码讲解中断代码定时启动…...

Nuxt.js 中的路由配置详解
Nuxt.js 通过其内置的路由系统简化了应用的路由配置,使得开发者可以轻松地管理页面导航和 URL 结构。路由配置主要涉及页面组件的组织、动态路由的设置以及路由元信息的配置。 自动路由生成 Nuxt.js 会根据 pages 目录下的文件结构自动生成路由配置。每个文件都会对…...
Matlab | matlab常用命令总结
常用命令 一、 基础操作与环境二、 矩阵与数组操作(核心)三、 绘图与可视化四、 编程与控制流五、 符号计算 (Symbolic Math Toolbox)六、 文件与数据 I/O七、 常用函数类别重要提示这是一份 MATLAB 常用命令和功能的总结,涵盖了基础操作、矩阵运算、绘图、编程和文件处理等…...
Android Bitmap治理全解析:从加载优化到泄漏防控的全生命周期管理
引言 Bitmap(位图)是Android应用内存占用的“头号杀手”。一张1080P(1920x1080)的图片以ARGB_8888格式加载时,内存占用高达8MB(192010804字节)。据统计,超过60%的应用OOM崩溃与Bitm…...
今日学习:Spring线程池|并发修改异常|链路丢失|登录续期|VIP过期策略|数值类缓存
文章目录 优雅版线程池ThreadPoolTaskExecutor和ThreadPoolTaskExecutor的装饰器并发修改异常并发修改异常简介实现机制设计原因及意义 使用线程池造成的链路丢失问题线程池导致的链路丢失问题发生原因 常见解决方法更好的解决方法设计精妙之处 登录续期登录续期常见实现方式特…...

python执行测试用例,allure报乱码且未成功生成报告
allure执行测试用例时显示乱码:‘allure’ �����ڲ����ⲿ���Ҳ���ǿ�&am…...

学校时钟系统,标准考场时钟系统,AI亮相2025高考,赛思时钟系统为教育公平筑起“精准防线”
2025年#高考 将在近日拉开帷幕,#AI 监考一度冲上热搜。当AI深度融入高考,#时间同步 不再是辅助功能,而是决定AI监考系统成败的“生命线”。 AI亮相2025高考,40种异常行为0.5秒精准识别 2025年高考即将拉开帷幕,江西、…...
基于Java Swing的电子通讯录设计与实现:附系统托盘功能代码详解
JAVASQL电子通讯录带系统托盘 一、系统概述 本电子通讯录系统采用Java Swing开发桌面应用,结合SQLite数据库实现联系人管理功能,并集成系统托盘功能提升用户体验。系统支持联系人的增删改查、分组管理、搜索过滤等功能,同时可以最小化到系统…...