【ARM 嵌入式 C 入门及渐进 14 -- C 代码中取余与取模的使用介绍】
请阅读【嵌入式开发学习必备专栏 】
文章目录
- 背景
- 示例
背景
有些文件每行是固定的字符个数,那么如果任意给个字符的序号,怎么通过C 代码获取该字符所在的行呢?
处理这个问题就要用到 C 语言中的取余和取模运算了。
示例
在 C 语言中,可以通过以下函数实现根据给定的起始位 start_bit
计算它所在的行号(假设每行有固定的32个字符)。我们可以假设每个字符占用1个位,即每行32位。函数将返回计算出的行号,其中行号从1开始计数。
#include <stdio.h>
// 函数声明
int calculate_line_number(int start_bit);
int main(void)
{int start_bit = 65; // 示例:查找第65位所在的行int line_number = calculate_line_number(start_bit);printf("The bit at position %d is on line %d.\n", start_bit, line_number);return 0;
}
// 函数定义
int calculate_line_number(int start_bit)
{const int bits_per_line = 32; // 每行32个字符,假设每个字符占用1个位int line_number;// 计算行号,从1开始计数line_number = (start_bit / bits_per_line) + ((start_bit % bits_per_line) > 0 ? 1 : 0);return line_number;
}
在这个函数中,我们首先定义了每行的位数 bits_per_line
为32。我们使用整数除法 start_bit / bits_per_line
来计算基本的行数,并使用取余运算符 %
检查是否有额外的位数,如果有,表明 start_bit
位于下一行,因此行号需要加1。
这里的主要逻辑是,如果 start_bit
正好是 bits_per_line
(32) 的倍数,它将位于 start_bit / bits_per_line
的行,否则位于 start_bit / bits_per_line
+ 1 的行。
在 main
函数中,我们调用 calculate_line_number
函数并传入示例起始位 65
,然后打印出结果。按照这个逻辑,位65将位于第3行,因为 65 / 32
的商是2,余数是1,所以它位于第2行的下一行,即第3行。
假设给定字符长度为 bits_len
,若要将这些字符全部拷贝 需要拷贝多少行数据?
可以编写如下函数:
#include <stdio.h>
// 函数声明
int calculate_lines_to_copy(int bits_len);
int main(void)
{int bits_len = 65; // 示例:需要拷贝的字符数int lines_to_copy = calculate_lines_to_copy(bits_len);printf("Need to copy %d lines for %d characters.\n", lines_to_copy, bits_len);return 0;
}
// 函数定义
int calculate_lines_to_copy(int bits_len) {const int chars_per_line = 32; // 每行固定32个字符int lines;// 计算需要拷贝的行数lines = bits_len / chars_per_line;// 如果 bits_len 不是 chars_per_line 的整数倍,则需要多拷贝一行if (bits_len % chars_per_line != 0) {lines++;}return lines;
}
在这个函数 calculate_lines_to_copy
中,我们定义了每行的字符数 chars_per_line
为32。函数使用整数除法 bits_len / chars_per_line
来计算基本的行数,并使用取余运算符 %
检查是否有剩余的字符,如果有,表明 bits_len
超出了整数行,因此需要额外拷贝一行。
在 main
函数中,我们调用 calculate_lines_to_copy
函数并传入示例长度 65
,然后打印出需要拷贝的行数。按照这个逻辑,对于65个字符,需要拷贝的行数将是3行,因为 65 / 32
的商是2,余数是1,所以需要在第2行的基础上再加1行。
相关文章:
【ARM 嵌入式 C 入门及渐进 14 -- C 代码中取余与取模的使用介绍】
请阅读【嵌入式开发学习必备专栏 】 文章目录 背景示例 背景 有些文件每行是固定的字符个数,那么如果任意给个字符的序号,怎么通过C 代码获取该字符所在的行呢? 处理这个问题就要用到 C 语言中的取余和取模运算了。 示例 在 C 语言中&…...
C++入门知识详细讲解
C入门知识详细讲解 1. C简介1.1 什么是C1.2 C的发展史1.3. C的重要性1.3.1 语言的使用广泛度1.3.2 在工作领域 2. C基本语法知识2.1. C关键字(C98)2.2. 命名空间2.2 命名空间使用2.2 命名空间使用 2.3. C输入&输出2.4. 缺省参数2.4.1 缺省参数概念2.4.2 缺省参数分类 2.5. …...
pytorch中的torch.hub.load():以vggish为例
pytorch提供了torch.hub.load()函数加载模型,该方法可以从网上直接下载模型或是从本地加载模型。官方文档 torch.hub.load(repo_or_dir, model, *args, sourcegithub, trust_repoNone, force_reloadFalse, verboseTrue, skip_validationFalse, **kwargs)参数说明&a…...
mysql 用户管理-权限管理
学习了用户管理,再学习下权限管理。 3,权限管理 权限管理主要是对登录到MySQL的用户进行权限验证。所有用户的权限都存储在MySQL的权限表中,不合理的权限规划会给MySQL服务器带来安全隐患。数据库管理员要对所有用户的权限进行合理规…...
RabbitMQ--04--发布订阅模式 (fanout)-案例
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 发布订阅模式 (fanout)---案例前言RabbitListener和RabbitHandler的使用 1.通过Spring官网快速创建一个RabbitMQ的生产者项目2.导入项目后在application.yml文件中配…...
基于java+SpringBoot+Vue的网上书城管理系统设计与实现
基于javaSpringBootVue的网上书城管理系统设计与实现 开发语言: Java 数据库: MySQL技术: SpringBoot MyBatis工具: IDEA/Eclipse、Navicat、Maven 系统展示 前台展示 后台展示 系统简介 整体功能包含: 网上书城管理系统是一个基于互联网的在线购书平台&#…...
PCL点云处理之M估计样本一致性(MSAC)平面拟合(二百三十六)
PCL点云处理之M估计样本一致性(MSAC)平面拟合(二百三十五六) 一、算法介绍二、使用步骤1.代码2.效果一、算法介绍 写论文当然用RANSAC的优化变种算法MSAC啊,RANSAC太土太LOW了哈哈 MSAC算法(M-estimator Sample Consensus)是RANSAC(Random Sample Consensus)的一种…...
通过WSL在阿里云上部署Vue项目
参考: 阿里云上搭建网站-CSDN博客 云服务器重装 关闭当前运行实例 更换操作系统,还有其他的进入方式。 选择ubuntu系统(和WSL使用相同的系统)。 设置用户和密码。发送短信验证码。 新系统更新。秒速干净的新系统设置完成。 这…...
240330-大模型资源-使用教程-部署方式-部分笔记
A. 大模型资源 Models - Hugging FaceHF-Mirror - Huggingface 镜像站模型库首页 魔搭社区 B. 使用教程 HuggingFace HuggingFace 10分钟快速入门(一),利用Transformers,Pipeline探索AI。_哔哩哔哩_bilibiliHuggingFace快速入…...
uni-app 富文本编辑器
<template><view class"container"><view>标题:<u-input placeholder"请输入标题"></u-input></view><view class"page-body"><view classwrapper><view classtoolbar tap"…...
3D汽车模型线上三维互动展示提供视觉盛宴
VR全景虚拟看车软件正在引领汽车展览行业迈向一个全新的时代,它不仅颠覆了传统展览的局限,还为参展者提供了前所未有的高效、便捷和互动体验。借助于尖端的vr虚拟现实技术、逼真的web3d开发、先进的云计算能力以及强大的大数据处理,这一在线展…...
如何在Flutter中进行网络请求?
Hello!大家好,我是咕噜铁蛋,你们的好朋友!今天,我想和大家分享一下在Flutter中如何进行网络请求。Flutter作为一个跨平台的开发框架,网络请求是其实现数据交互的重要一环。下面,我将详细介绍几种…...
node:ReferenceError: XMLHttpRequest is not defined
node:ReferenceError: XMLHttpRequest is not defined 1 前言 node执行如下代码: new XMLHttpRequest()报错提示:ReferenceError: XMLHttpRequest is not defined 2 解决 2.1 可能原因是没有安装xmlhttprequest npm install xmlhttpreq…...
PHP定时任务框架taskPHP3.0的学习记录1(TaskPHP、执行任务类的实操代码实例)
TaskPHP是一个基于PHP的定时任务框架,它提供了一个简单、灵活且易于使用的解决方案,用于在PHP环境中执行定时任务。下面是对TaskPHP框架的简要介绍: 简单易用:TaskPHP的设计目标是让定时任务的创建和管理变得简单。通过简单的配置…...
图腾柱PFC:HP1010为您的电动两轮车之旅提供绿色,高效,安全的动力
电动两轮车不仅为当今生活提供了便利,更是一种健康和绿色的出行方式。想象一下,在经过一整晚的充分休息,骑上爱车,满血复活的准备开始新的一天。您会愿意带着如何给心爱的两轮车充电的担心开始这一天吗? 随着越来越…...
动态规划-----背包类问题(0-1背包与完全背包)详解
目录 什么是背包问题? 动态规划问题的一般解决办法: 0-1背包问题: 0 - 1背包类问题 分割等和子集: 完全背包问题: 完全背包类问题 零钱兑换II: 什么是背包问题? 背包问题(Knapsack problem)是一种…...
通过 Docker 搭建 BookStack
文章目录 环境说明1、官方网站2、通过 Docker 部署总结 环境说明 操作系统版本:CentOS Linux release 7.9.2009 (Core) Docker 版本:Docker Engine - Community 24.0.2 BookStack 版本:23.02.3 MySQL 版本:8.0.32 1、官方网站 G…...
通俗易懂:什么是Java虚拟机(JVM)?它的主要作用是什么?
Java虚拟机(Java Virtual Machine, JVM)是一种软件实现的抽象计算机,它负责执行Java字节码(Bytecode)。Java程序并不是直接在物理计算机上运行,而是先由Java编译器将源代码编译成与平台无关的字节码&#x…...
[k8s] kubectl执行失败后等待一段时间再重试 (Shell实现)
使用Shell脚本实现功能: kubectl执行失败后,等待30秒后再重试,一共重试3次,代码如下: #!/bin/bashKUBECTL_BIN/var/lib/snapd/snap/bin/kubectlERR_MSG_K8S_NOTRUNNING"microk8s is not running" ERR_MSG_C…...
java中的static和单例模式
同一个类中,访问其类成员,可以省略类名不写 static:叫静态,可以修饰成员变量,成员方法。 成员变量按照有无static修饰,分为两种: 类变量:有static修饰,属于类…...
RabbitMQ相关总结
Broker 异步调用中用Broker进行事件订阅和调用,完成解耦 没有强依赖,不用担心级联失败 流量削峰 MQ 的下载 1.可以使用命令拉取镜像 docker pull rabbitmq:3-management 2.也可以直接去官网下载tar包,然后上传到虚拟机上面 spring AMQP…...
RAFT: Adapting Language Model to Domain Specific RAG
今天来介绍下伯克利大学3.15日新发的一篇paper,RAFT: Adapting Language Model to Domain Specific RAG 主要研究了如何构造训练数据来微调你的LLM,从而在LLM在垂直领域的RAG中表现更好。并且开源了代码:GitHub - ShishirPatil/gorilla: Gorilla: An API store for LLMs 主…...
第十五届蓝桥杯第三期模拟赛第十题 ← 上楼梯
【问题描述】 小蓝要上一个楼梯,楼梯共有 n 级台阶(即小蓝总共要走 n 级)。小蓝每一步可以走 a 级、b 级或 c 级台阶。 请问小蓝总共有多少种方案能正好走到楼梯顶端?【输入格式】 输入的第一行包含一个整数 n 。 第二行包含三个整…...
第四题:星期一
题目描述 本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。 整个 20 世纪(1901 年 1 月 1 日至 2000 年 12 月 31 日之间),一共有多少个星期一?(不要告诉我你不知道今天是星期几…...
Mamba: Linear-Time Sequence Modeling with Selective State Spaces(论文笔记)
What can I say? 2024年我还能说什么? Mamba out! 曼巴出来了! 原文链接: [2312.00752] Mamba: Linear-Time Sequence Modeling with Selective State Spaces (arxiv.org) 原文笔记: What: Mamba: Linear-Time …...
2024蓝桥杯每日一题(区间DP)
备战2024年蓝桥杯 -- 每日一题 Python大学A组 试题一:游戏 试题二:石子合并 试题三:密码脱落 试题四:能量项链 试题一:游戏 【题目描述】 玩家一和玩家二共同玩一个小游戏。给定一个包含 N 个…...
LeetCode-2952. 需要添加的硬币的最小数量【贪心 数组 排序】
LeetCode-2952. 需要添加的硬币的最小数量【贪心 数组 排序】 题目描述:解题思路一:看提示主要是用贪心和排序。那我们肯定是首先对coins排序。然后依次遍历coins[i],获取当前可以获取金额范围,和判断是否加入新硬币。判断规则如下…...
新书速递——《可解释AI实战(PyTorch版)》
本书旨在帮助你实施最新的可解释AI技术,以构建公平且可解释的AI系统。可解释AI是当今AI研究中的热门话题,但只有少数资源和指南涵盖了所有重要技术,这些技术对实践者来说非常有价值。本书旨在填补这一空白。 本书读者对象 本书既适合那些有兴…...
国产数据库中统计信息自动更新机制
数据库中统计信息描述的数据库中表和索引的大小数以及数据分布状况,统计信息的准确性对优化器选择执行计划时具有重要的参考意义。本文简要整理了下传统数据库和国产数据库中统计信息的自动更新机制,以加深了解。 1、数据库统计信息介绍 优化器是数据库…...
【C++】入门C++(中)
好的,我们继续,这是 C专栏的第二篇博客,还没读过上一篇博客可以进入我创建的专栏阅读 入门C(上)再回来哦~ 下面我们要讲的第一个概念就是函数重载 函数重载 1. 函数重载概念 什么是函数重载? 简单来说…...
青岛知名网站建设公司/百度推广登录平台网址
导读:一直以来,众多学校教学以及公司开发环境所使用Visual Studio .NET Framework版本多不相同,本文作者比较了.NET Framework多个版本之间的区别,方便各位选择和切换.NET Framework。 版本号发布日期Visual Studio的版本Windows上…...
没网站可以做百度推广吗/网络推广方式有哪几种
HTML 基础 文章目录HTML 基础一,结构1.1HTML文件基本结构1.2标签层次结构二、HTML常见标签2.1 标题标签2.2注释标签2.3段落标签2.4换行标签2.5格式化标签2.6 图片标签 img ☆2.7超链接标签2.8表格2.9列表标签三、表单标签3.1 input ☆3.2 select3.3 textarea3.3 无语…...
网站建设背景及意义/广告推广方案
前言 ConfigurationClassPostProcessor实现了BeanDefinitionRegistryPostProcessor接口,该类会在AbstractApplicationContext#refresh 中的第5步时进行调用.由于其postProcessBeanDefinitionRegistry 实现过程非常复杂,因此单拿一篇进行分析 解析 ConfigurationClassPostPro…...
第三方交易网站怎么做/软文之家
对于数据库中表空间查看,想必大家都有很多的脚本已经在用了,自己也啰嗦一下,分享一个通过shell脚本查看表空间使用情况的例子。对于数据库中表空间查看,想必大家都有很多的脚本已经在用了,,自己也啰嗦一下&…...
c语言和网站建设的关系/石家庄新闻头条新闻最新今天
2019独角兽企业重金招聘Python工程师标准>>> boot2docker 用的Vbox,所以用VBox的命令做NAT #先要停掉所有的容器 docker ps -a -q | xargs docker stop #停到boot2docker boot2docker stop #如果容器的端口是 8080的话 (docker -p 18080:8080) VBoxManag…...
山东网站建设报价/正规seo需要多少钱
转载自http://www.blogjava.net/action/articles/17339.html(他也是转载,感谢原作者) Eclipse快捷键大全(转载) Ctrl1 快速修复(最经典的快捷键,就不用多说了) CtrlD: 删除当前行 CtrlAlt↓ 复制当前行到下一行(复制增加) CtrlAlt↑ 复制当前…...