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

C 获取特定位数的值

1-1 逐位提取数字


获取对应位数的数字,适应开发过程中的各种操作,具体的代码演示案例如下所示


假设 val 是一个 5位整数(范围:0~99999),代码将逐位提取其数字,并存储到数组 g_Tempbuf 中:

g_Tempbuf[0] = val / 10000;           // 提取万位(第5位)
g_Tempbuf[1] = (val % 10000) / 1000;  // 提取千位(第4位)
g_Tempbuf[2] = (val % 1000) / 100;    // 提取百位(第3位)
g_Tempbuf[3] = (val % 100) / 10;      // 提取十位(第2位)
g_Tempbuf[4] = val % 10;              // 提取个位(第1位)

1-2 实际分析


val = 12345 为例:万位

g_Tempbuf[0] = 12345 / 10000 = 1  // 整数除法,得到万位数字 1

千位(第4位)

val % 10000 = 12345 % 10000 = 2345  // 取余后保留后4位
2345 / 1000 = 2                     // 整数除法,得到千位数字 2

百位(第3位)

val % 1000 = 12345 % 1000 = 345    // 取余后保留后3位
345 / 100 = 3                      // 整数除法,得到百位数字 3

十位(第2位)

val % 100 = 12345 % 100 = 45       // 取余后保留后2位
45 / 10 = 4                        // 整数除法,得到十位数字 4

个位(第1位)

val % 10 = 12345 % 10 = 5          // 直接取余,得到个位数字 5

最终,g_Tempbuf 的内容为:[1, 2, 3, 4, 5]


1-3 数组索引与位数


g_Tempbuf[0] 万位(最高位)

g_Tempbuf[2] 百位

g_Tempbuf[3]十位

g_Tempbuf[4] 个位(最低位)


适用的范围是:


5位整数:如果 val 不足5位(例如 val = 123),高位将补零。

例如:

val = 123g_Tempbuf = [0, 0, 1, 2, 3]

超过5位:如果 val 超过5位(例如 val = 123456),代码将截断高位。

例如:

val = 123456g_Tempbuf[0] = 12(实际是错误结果)


潜在问题:


前导零:不足5位时高位自动补零,需根据需求决定是否保留。

数值溢出:若 val 超过5位(如 val ≥ 100000),高位计算结果可能不符合预期。


1-4 程序改进


使用循环或对数运算动态确定位数,避免硬编码除法:

for (int i = 0; i < 5; i++) {
    g_Tempbuf[i] = val / (int)pow(10, 4 - i) % 10;
}

添加范围检查:

if (val > 99999) {
    // 错误处理:数值超出范围
}

若需要忽略高位零,可记录有效位起始位置:

int start = 0;
while (start < 5 && g_Tempbuf[start] == 0) {
    start++;
}
// 从 start 开始为有效数字

功能:


功能:将最多5位的整数按万位→个位顺序分解到数组中。

适用场景:固定位数显示(如数码管、LCD显示数值)。

注意事项:需确保输入值在合理范围内,并根据需求处理前导零和溢出问题。

......

相关文章:

  • Web入侵实战分析
  • 经典Embedding方法:Word2Vec与Skip-Gram算法)
  • 如何禁止chrome浏览器自动更新
  • Leetcode:学习记录(二)
  • tcp协议连接,和传输数据
  • 【论文复现】ESRGAN
  • 使用 Certbot 自动获取和更新 Let‘s Encrypt SSL 证书
  • Matlab写入点云数据到Rosbag
  • 基于YOLOv8的人脸识别系统
  • JVM类文件结构深度解析:跨平台基石与字节码探秘
  • Idea新建Package嵌套折叠现象以及如何处理
  • SPO(Self-Supervised Prompt Optimization)自我监督Prompt提示优化的全景指南
  • 2023年全国职业院校技能大赛GZ073网络系统管理赛项赛题第10套模块A:网络构建
  • 解码 NLP:从萌芽到蓬勃的技术蜕变之旅
  • VMware新建虚拟机
  • 智能体(AI Agent、Deepseek、硅基流动)落地实践Demo——借助大模型生成报表,推动AI赋能企业决策
  • Jest单元测试
  • Word接入DeepSeek(API的作用)
  • TypeScript学习:初学
  • 【学习笔记】Cadence电子设计全流程(二)原理图库的创建与设计(上)
  • 十大券商看后市|A股中枢有望逐步震荡抬升,把握结构性行情
  • 乘联分会:上半年车市价格竞争温和,下半年价格战或再开启
  • 7月打卡乐高乐园,还可以去千年古镇枫泾参加这个漫画艺术季
  • 河北邯郸一酒店婚宴发生火灾:众人惊险逃生,酒店未买保险
  • 重庆大学通报本科生发14篇SCI论文:涉事学生及其父亲被处理
  • “苏河超级管”调研:桥下公园“留白”很好,指引差点