数值数据类型及其内存存储实现简介(C&C++)

「免费开源」从 OCR 识别到结构化输出:合同文本高效比对的完整解决方案! 本文将系统拆解这一解决方案的技术逻辑、实施步骤与落地价值,为企业合同管理数字化转型提供实操指南。字段提取:自动识别并提取预设的关键字段(如 “甲方”“乙方”“合同金额”“履约期限” 等),若遇到模糊表述(如 “付款时间为合同签订后 30 个工作日内”),系统可自动解析为 “履约期限:合同签订日 + 30 工作日”;预设结构化字段:根据合同类型(如采购合同、服务合同、租赁合同),定义需提取的关键字段(如 “甲方名称”“乙方名称”“合同金额”“有效期起 / 止日期”“履约地点”“违约金比例” 等); 阅读详情

一、常见数值数据类型

1.1 整型类

类型字节大小取值范围说明
char1-128 到 127字符型,本质属于整数类型
unsigned char10 到 255无符号字符型
int4-2³¹ 到 2³¹-1基本整型(主流平台)
unsigned int40 到 2³²-1无符号基本整型
short2-32,768 到 32,767短整型(等价于 short int)
unsigned short20 到 65,535无符号短整型
long4/8-2³¹ 到 2³¹-1 /-2⁶³ 到 2⁶³-1长整型,Windows 平台为 4 字节,Linux/macOS 平台为 8 字节
unsigned long4/80 到 2³²-1 / 0 到 2⁶⁴-1无符号长整型,字节数与 long 一致
long long8-2⁶³ 到 2⁶³-1超长整型(C99 标准新增)
unsigned long long80 到 2⁶⁴-1无符号超长整型

1.2 浮点型类

类型典型大小(字节)取值范围精度说明
float4约 ±3.4×10±38约 6-7 位有效数字单精度浮点数
double8约 ±1.7×10±308约 15-16 位有效数字双精度浮点数(默认浮点类型)
long double10/12/16约 ±1.2×10-4932 到 ±1.1×104932精度通常比 double 高扩展精度浮点数,大小依赖编译器与系统

二、数值的内存存储规则

在 C/C++ 中,整型数值统一以补码形式存储,以简化硬件层面的加减运算;浮点型数值则遵循 IEEE 754 标准 存储,结构与整型完全不同。以下分类型详解存储逻辑。

2.1 整型数值的存储(补码规则)

补码的核心作用是将 “减法” 转化为 “加法”,无需单独处理符号位。其推导依赖 “原码” 和 “反码” 两个概念,不同符号的整数,补码计算方式不同。

2.1.1 正数的补码

正数的补码 = 原码(即该数的二进制表示),空位补 0。

  • 示例:十进制 10 用 short(2 字节)存储
    1. 十进制 10 转为二进制原码:1010
    2. 补齐 16 位(short 长度):0000 0000 0000 1010
    3. 补码与原码一致,最终存储为 0000 0000 0000 1010
2.1.2 负数的补码

负数的补码 = 其相反数的原码 → 各位取反(反码)→ 尾位加 1。

  • 示例:十进制 -10 用 char(1 字节)存储
    1. 求相反数 10 的原码:0000 1010
    2. 各位取反得到反码:1111 0101
    3. 尾位加 1 得到补码:1111 0110
    4. 最终存储为 1111 0110
2.1.3 十进制转二进制(正数)代码实现

以下代码将十进制正数转为二进制,并以 int(4 字节)格式输出,空位补 0。

cpp

运行

#include <iostream>
using namespace std;

int main() {
    int n;
    int dectobin[32] = {0};  // int 占 4 字节 = 32 位,初始化数组存每一位
    cin >> n;

    int i = 31;  // 从最高位(第31位)开始填充
    while (n != 0 && i >= 0) {  // 增加 i>=0 避免数组越界
        dectobin[i] = n % 2;
        n /= 2;
        i--;
    }

    // 输出 32 位二进制
    for (auto& k : dectobin) {
        cout << k;
    }
    return 0;
}

2.2 浮点型数值的存储

浮点型数值无法用 “补码” 存储,需按 IEEE 754 标准拆分为 符号位、指数位、尾数位 三部分,结构如下表所示:

类型总位数符号位(1 位)指数位(n 位)尾数位(m 位)指数偏移值
float32第 31 位第 30-23 位(8 位)第 22-0 位(23 位)127(2⁸⁻¹ - 1)
double64第 63 位第 62-52 位(11 位)第 51-0 位(52 位)1023(2¹¹⁻¹ - 1)
2.2.1 存储核心规则
  1. 符号位:0 表示正数,1 表示负数。
  2. 指数位:用 “偏移值” 统一表示正负指数,计算方式为:实际指数 = 存储指数 - 偏移值(存储指数为无符号整数)。
  3. 尾数位:采用 “规格化表示”,默认整数部分为 1(不存储),仅存储小数部分,以节省空间。
2.2.2 示例:十进制 -0.65 以 float 存储
  1. 步骤 1:求绝对值的二进制小数十进制 0.65 转二进制(小数部分可能循环,需按 float 精度截断):

    • 0.65 × 2 = 1.3 → 整数 1(记为第 1 位),余小数 0.3
    • 0.3 × 2 = 0.6 → 整数 0(记为第 2 位),余小数 0.6
    • 0.6 × 2 = 1.2 → 整数 1(记为第 3 位),余小数 0.2
    • 0.2 × 2 = 0.4 → 整数 0(记为第 4 位),余小数 0.4
    • 0.4 × 2 = 0.8 → 整数 0(记为第 5 位),余小数 0.8
    • 0.8 × 2 = 1.6 → 整数 1(记为第 6 位),余小数 0.6(开始循环)
    • 最终二进制小数:0.101001 1001 1001...(循环节为 1001)
  2. 步骤 2:规格化与指数计算规格化要求小数点移到 “第一个 1 之后”:

    • 原二进制:0.101001... → 右移 1 位 → 1.01001... × 2⁻¹
    • 实际指数 = -1,存储指数 = 实际指数 + 偏移值(127)= 126 → 二进制 01111110
  3. 步骤 3:确定尾数位float 尾数位共 23 位,仅存储规格化后 “1.” 后的小数部分:

    • 小数部分:01001 1001 1001 1001 1001 10(共 23 位,截断循环部分)
  4. 步骤 4:拼接三部分

    • 符号位:-0.65 为负数 → 1
    • 指数位:126 的二进制 → 01111110
    • 尾数位:01001100110011001100110
    • 最终 32 位存储:1 01111110 01001100110011001100110
LM Studio Bionic:本地AI智能体从部署到实战完整指南 AI智能体作为能够自主规划、执行多步任务的人工智能系统,其核心原理在于结合大语言模型的推理能力与工具调用机制。通过状态保持和任务分解算法,智能体实现了从单次问答到持续协作的技术跃迁。在工程实践中,这种架构显著降低了复杂任务自动化的门槛,特别适用于数据敏感场景和定制化需求。以Tesla V100等专业硬件为例,本地部署能充分发挥其大显存优势,支持更高精度的模型量化格式。在实际应用层面,智能体可无缝集成到代码审查、文档生成等开发工作流中,而LM Studio Bionic通过统一界面整合了模型服务、任务规划器等 阅读详情

相关推荐

【在英伟达nvidia的jetson-orin-nx上使用调试can基础收发-硬件连接-开机自启动can-初步调试】

近期开始学习英伟达的工控板,作为新手还是有很多不同懂得地方,但是一部分它用的linux系统,有点像玩树莓派,通过自己一段时间学习can调试,终于可以简单通信了。开始的时候,自己也是什么都不是很懂,从新手一点点摸索过来,现在使用工控机,简单can通信也已经没有问题了,算是有些进步吧。每一步走的都很艰辛,需要反复验证,才能准去无误,开始以为发送没有问题就没事了,没想到发送可以却接受不行,每一步都要反复确认啊,这个问题会持续关注下吧。

qq_22146161的博客 6123

内存的存储

内存的存储

weixin_72758935的博客 588

以太网测试用例(光模块线缆、网卡类设备、交换类设备)

LeCroy力科网络测试相关的测试用例分享:光模块/DAC/ACC/AEC/AOC测试,网卡类产品测试/GPU/DPU/SmartNIC,交换类产品测试。涉及物理层的FEC,SKEW,Tx/Rx Taps和Layer23层的网络性能测试/吞吐量延迟抖动丢包率背靠背性能,以及RDMA带状况的网络协议分析。同步提供400G高速的以太网的损伤,提供定量,可重复的负面压力测试环境。

专注有线以太网性能测试--丹麦信雅纳网络(Xena Networks) 1998

简单心得——数据在内存中存储的类型

数据存储类型简介

m0_62943985的博客 656

群晖Web Station实战:从零搭建个人静态导航站

本文详细介绍了如何利用群晖NAS自带的Web Station套件,从零开始搭建个人静态导航站。通过安装Web Station、上传静态网站源码、配置网页服务与网络门户等步骤,无需代码基础即可实现内网访问。文章还分享了文件权限设置、个性化定制及常见问题排查等实用技巧,帮助用户高效管理个人常用网址,充分挖掘NAS的服务器潜能。

tea88的博客 1331

YOLOv11改进策略【小目标改进】| Shape-NWD:融合改进,结合Shape-IoU和NWD 更好地适应小目标特性

Bw−wgt2h−hgt2weight2Bweight2w−wgt​2h−hgt​2​其中weight2weight = 2weight2。

Limiiiing的博客 3055

C语言数据类型占内存大小

C语言数据类型 使用sizeof计算各数据类型占用内存大小 #include<stdio.h> int main() { typedef struct { int a ; char b; int c; }struct_test_t; typedef enum{ test1 =1, test2, test3, test4, test5 }e...

j_learn的博客 8568

AI Agent Harness Engineering 的“热插拔”能力:模块化设计思路

本文我会结合我在大厂做AI Agent平台的实战经验,从核心概念、架构设计、代码实现、落地实战多个维度,给大家详细讲解AI Agent Harness Engineering的核心能力——热插拔的模块化设计思路。我们会从问题根源出发,一步步搭建一个完整的支持热插拔的Agent Harness框架,包含组件抽象、注册中心、生命周期管理、配置驱动、容错机制等核心模块。

AI天才研究院 503

数据类型及其在内存中的存储方式

一、数据内存理解: 常用的数据类型(C语言):char、short、int、long、long long、float、double,分为整形和浮点型。整形:(unsigned) char、(unsigned) short、(unsigned) int、(unsigned) long;浮点型:float、double。 此外还有构造类型:数组、struct、union、enum。 指针类型、空...

Lee_Blog 5345

电子元器件-三极管终终篇:三极管工作原理详解、参数/手册详解、开关应用详解、Ib电流研究、开关应用实例

三极管工作原理与应用摘要 三极管是一种电流控制器件,通过小基极电流控制大集电极电流。其内部结构由高掺杂发射区、薄低掺杂基区和中等掺杂集电区组成,形成NPN或PNP结。三极管有三种工作状态: 截止区:发射结和集电结均反偏,无放大作用 放大区:发射结正偏,集电结反偏,Ic=βIb 饱和区:两结均正偏,Ic不再随Ib增大 作为开关使用时,需确保三极管深度饱和(Vce≈0.2V)。设计要点包括: 基极电阻计算确保Ib足够大 集电极电阻控制Ic 基极加下拉电阻提高抗干扰 NPN管作地开关,PNP管作电源开关 典型应用

qq_60226558的博客 316

华为OD技术面真题 - Python开发 - 2

汇总华为OD技术面八股Python八股,高频技术真题并提供详细解答。

qq_45776114的博客 910

信息存储单位+常见数据类型

计算机内部信息的存储单位 信息的单位通常采用“位”、“字”、“字节” 位(bit):度量数据的最小单位,表示1位二进制信息 字节(Byte):一个字节由8位二进制数字组成(1Byte=8bit)。字节是信息存储中最常见的基本单位。计算机的存储器(包括内存与外存)通常也是以多少字节来表示它的容量。常用的单位有: 单位 转换 K字节 (KB) 1K=1024B M(兆)字节 (...

eeem 2460

阅文集团大数据面试题及参考答案

在 Flink 中,watermark 是一种用于处理乱序事件时间的机制。实现接口:通常需要实现 AssignerWithPeriodicWatermarks 或 AssignerWithPunctuatedWatermarks 接口。前者会周期性地生成 watermark,后者则是基于某些特定事件来生成 watermark ,比如接收到某个特定值的消息时。定义位置:可以在数据源处或者在流处理的中间操作中定义 watermark。在数据源定义时,能更精准地根据数据的产生特性设置 watermark;

大模型大数据攻城狮的专栏 1089

关于int类型数据在内存中的高低位存储问题

最近在给学生讲课的时候,学生问到,对于一个c语言编写的程序,一个int类型的数据,在内存中是如何存储的。 例如:int类型的1在内存中占用4个字节,那这4个字节具体怎么存储呢? 目前市面上大部分书籍说的都是数字的字节表示形式,按照二进制的方式进行存储。学生就理所当然的认为是按照下面方式进行存储的。 第1字节                 第2字节                  第3字节

rumlee的专栏 1万+

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

C/C++中基本数据类型所占内存大小

C中不同数据类型所占的字节大小,在不同的操作系统和编译器下,是不同的,一般主要说gcc下,32位或64位系统的,红色部分是32 和64位系统不同的,做了个表如下: char 1 1 -128~127 unsigned char(当byte使用) 1 1 0~255 short int /short  2 2 –32,768~32,767 unsigned short   2 2 0~65,535 int 4 4 -2,147,483,648~2,147,483,647 unsigned int 4

ZMyths的博客 2万+

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

视频隐私脱敏工程化:CSRT/KCF追踪算法在本地推理中的实现与边界

在短视频内容合规审查中,动态遮挡(Dynamic Masking)是高频且高耗时的环节。传统手动关键帧打码不仅效率低下,且在目标快速移动或遮挡时极易出现遮罩漂移。本文从计算机视觉工程角度,解析基于CSRT与KCF算法的目标追踪方案在视频隐私处理中的技术路径、性能权衡及落地实践。

Mysssone的博客 354

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

把 KV Cache 压到 FP4:BitDecoding-FP4 的算法-系统协同设计复盘

长上下文推理卡在KV Cache的显存与带宽上,而现有FP4方案要么精度崩、要么速度废。这篇文章复盘BitDecoding-FP4如何用三个算法补丁加一个系统重构,在B300上把服务吞吐提升2.4–3.0倍,精度几乎不掉。

helloagent的博客 312

【算法拾光】链表 哈希表|K个一组翻转链表 + 两数之和

K个一组翻转链表需分段反转,借助哑节点与前驱指针维护连接,避免断链;两数之和利用哈希表实现O(1)查找,空间换时间,高效定位目标组合。前者考察链表指针操作,后者聚焦映射关系构建,均为面试高频题。

wuqingyigexiaoba的博客 333

排序算法深度笔记(下):非比较类排序的线性突破与工程边界

排序算法时间复杂度额外空间复杂度稳定性是否基于比较选择排序O(N^2)(O(1))不稳定是冒泡排序O(N^2)(O(1))稳定是插入排序O(N^2)(O(1))稳定是归并排序O(N\log N)(O(N))稳定是快速排序O(N\log N)O(log N)不稳定是堆排序O(N\log N)O(1)不稳定是计数排序(O(N + M))O(M))稳定否基数排序O(N)稳定否桶排序平均O(N) / 最坏O(N^2)

2401_87069538的博客 606

优选算法:分治-归并排序

交易逆序对的总数

Wangshijie1015的博客 148

算法日常・每日刷题--<动态规划>42

本题为“不相交的线”,与最长公共子序列问题相似。使用动态规划求解:定义 dp[i][j] 表示 nums1[0:i] 与 nums2[0:j] 的最大不相交连线数。若元素相等,则继承左上值加1;否则取上方或左方最大值。最终返回 dp[m][n],即两数组的最大不相交连线数。时间复杂度 O(mn),空间复杂度 O(mn)。

2503_92261635的博客 24

408 算法 06|堆与 Top-K:最小的 10 个数,到底该用数组还是堆

2022(42) 找 100 万个数里最小的 10 个,官方给了"10 元素有序数组"和"大根堆"两种答案。我把两种都实现并数了比较次数:k=10 时两者几乎打平,k=10000 时堆少 111 倍。另附 2021(42) 计数排序的比较次数与稳定性实测。

m0_56226131的博客 440

408 算法 04|主元素与三元组最小距离:两种“扫描时做决定“的思路

2013(41) 的主元素用摩尔投票一遍选出候选,但真正的考点是"选完必须验票";2020(41) 的三元组最小距离,三指针每次只挪最小的那个,靠的是 D=2×(max−min) 这个恒等式。两套完整 C 代码加真实输出,附官方评分档位表。

m0_56226131的博客 426

牛客周赛165C题(前后缀性质,递推,排序,枚举)

题目大意:给定长度为 `n` 的数组,选择 `k ∈ [1,n]`,将前 `k` 个元素整体翻转,后面的元素不变。要求操作后的整个数组非递减,统计满足条件的 `k` 的数量。题目链接:https://ac.nowcoder.com/acm/contest/141721/C。时间复杂度:O(nlogn)

2501_94316951的博客 174

算法64,字母异位词分组

代码核心思路是:互为字母异位词的字符串,在对其字符进行排序后,一定会得到相同的字符串。因此,可以将排序后的字符串作为哈希表的键(Key)来进行分组。

sheshibenniaodan的博客 203

【MPC 算法】Python 实战:模型预测控制(MPC)算法原理与代码实现

本文介绍模型预测控制(MPC)原理与Python实现。MPC通过滚动优化预测未来状态,结合系统模型、目标函数与约束条件,动态生成最优控制序列。以一阶温度系统为例,使用CVXPY构建凸优化问题,实现加热功率的智能调控。代码包含模型预测、目标函数设计(含温度跟踪与控制平滑惩罚)、输入约束及滚动更新机制。仿真结果表明,MPC能快速稳定温度至目标值60℃,且控制动作平滑合理,体现其在复杂系统中的优越性。

赖德发的博客 51
上一篇: 初次使用 Git Bash 所了解的知识 & 遇到的问题
下一篇: C语言字符与字符串存储原理深度解析
alwaysAlearner
博客等级 码龄2年 0粉丝 21原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值