CN113032291B - 查找数据与改写数据的方法 - Google Patents
查找数据与改写数据的方法 Download PDFInfo
- Publication number
- CN113032291B CN113032291B CN202110350895.1A CN202110350895A CN113032291B CN 113032291 B CN113032291 B CN 113032291B CN 202110350895 A CN202110350895 A CN 202110350895A CN 113032291 B CN113032291 B CN 113032291B
- Authority
- CN
- China
- Prior art keywords
- data
- bit
- byte
- current
- current byte
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Read Only Memory (AREA)
Abstract
Description
技术领域
本发明涉及计算机内存领域,具体涉及一种查找数据与改写数据的方法。
背景技术
对于MCU中的数组而言,最小单元为1个字节,每个字节由8位构成,可表示256种状态,如图1。通常而言,对于一个存在N种状态的数据(其中N>0),每种状态都应该由一个不同的数值表示,那么对于每种状态的描述需要的最小字节数可用如下公式表示:INT[(N-1)/256]+1,总共需要的字节数为:(INT[(N-1)/256]+1)*M,M为内存决定参数,M>0,(其中INT[x]表示取x整数部分)。
例如对于状态数为32的数据,设置参数M=256,由于存在32种状态,每种状态所需的最小字节数为INT[(32-1)/256]+1=1,所需的RAM(随机存取存储器(random accessmemory),内存)空间为:(INT[(32-1)/256]+1)*256=256(字节);又如对于状态数为257的数据,设置参数M=256,所需要的RAM空间为512(字节)。
然而,对于状态数为32的数据,表示每种状态所需的字节数为1,每个状态可以用一个数值表示,如0,1,2…31表示该数据的32种状态,实际上每个字节中的有效位数为5,而该字节中剩下的3位为无效位,通常其值始终为0,如图2,显然剩下的3位无效位被浪费了,其内存的利用率较低,而在RAM非常小的MCU中,内存利用率较低可能导致成本增加,出现某些功能无法实现等问题。
发明内容
本发明的目的是提供一种查找数据与改写数据的方法,实现了根据数据状态数以及数据参数为数据分配内存,极大地节约了内存空间,提高了内存的利用率。
本发明采取如下技术方案实现上述目的,优化数据内存分配的方法,包括:
若数据状态数为N,则每种状态所需的最小位数为a,a=INT[log2(N-1)]+1;
为所述数据分配b字节的内存空间。
查找数据的方法,应用于查找按照上述所述的优化数据内存分配的方法分配内存的数据,包括:
步骤1、若查找索引为i,则查找数据起始位置为s,s=i*a;
步骤3、确定起始字节c的位置偏移量d,d=s%8;
步骤4、从起始位s开始,根据位置偏移量值连续取a位数组合成二进制数,将二进制数的值作为索引i处的最终值。
进一步的是,所述从起始位s开始,根据位置偏移量连续取a位数组合成二进制数,将二进制数的值作为索引i处的值的具体方法包括:
步骤201、令当前字节c1=c,当前字节的起始位d1=d,当前未处理位数a1=a,索引i处的值v=0;
步骤202、计算当前字节c1的剩余位数r,r=8-d1;
步骤203、判断r是否小于当前未处理位数a1,若是,则进入步骤204;否则进入步骤208;
步骤204、取出当前字节c1从起始位d1开始连续r位的数,按照取出顺序组合成第一二进制数,并获取所述第一二进制数的值vh;
步骤206、令当前未处理位数a1=a1-r,当前字节c1=c1+1,当前字节的起始位d1=0;
步骤207、返回步骤202;
步骤208、取出当前字节c1从起始位d1开始连续a1位的数,按照取出顺序组合成第二二进制数,并获取所述第二二进制数的值ve;
改写数据的方法,应用于改写按照上述所述的优化数据内存分配的方法分配内存的数据,包括:
S1、若改写索引为i,则改写数据起始位置为s,s=i*a;
S3、确定起始字节c的位置偏移量d,d=s%8;
S4、从起始位s开始,根据位置偏移量值将连续a位数改写为目标值。
进一步的是,所述从起始位s开始,根据位置偏移量将连续a位数改写为目标值的具体方法包括:
步骤401、令当前字节c1=c,当前字节的起始位d1=d,当前未处理位数a1=a,目标值为c2;
步骤402、确定当前字节c1的剩余位数r,r=8-d1;
步骤403、判断r是否小于当前未处理位数a1,若是,则进入步骤404;否则进入步骤407;
步骤404、将当前字节c1从起始位d1位开始的连续r位用目标值c2从0位开始的连续r位替换;
步骤406、返回步骤402;
步骤407、将当前字节c1从起始位d1位开始的连续a1位用目标值c2替代。
本发明根据数据状态数以及数据参数为数据分配内存,对于状态数为32的数据,设置参数M=256,所需的内存仅为160字节,而目前的内存分配方法需要256字节,相对于现有技术,本发明极大地提高了内存的利用率,基于本发明优化数据内存分配的方法的数据查找及改写方法,提高了内存利用率,并进一步提高了数据查找以及改写的效率。
附图说明
图1是MCU的每个字节存储单元的示意图。
图2是最大状态数为32的数据的有效位使用情况。
图3是本发明优化数据内存分配的方法流程图。
图4是实施例2对应的示意图。
图5是实施例3对应的示意图。
图6是实施例3对应的示意图。
图7是实施例3对应的示意图。
具体实施方式
本发明优化数据内存分配的方法,其方法流程图如图3,包括:
步骤101、若数据状态数为N,则每种状态所需的最小位数为a,a=INT[log2(N-1)]+1;
步骤103、为所述数据分配b字节的内存空间。
查找数据的方法,应用于查找按照上述所述的优化数据内存分配的方法分配内存的数据,包括:
步骤1、若查找索引为i,则查找数据起始位置为s,s=i*a;
步骤3、确定起始字节c的位置偏移量d,d=s%8;
步骤4、从起始位s开始,根据位置偏移量值连续取a位数组合成二进制数,将二进制数的值作为索引i处的最终值。
步骤4中,从起始位s开始,根据位置偏移量连续取a位数组合成二进制数,将二进制数的值作为索引i处的值的具体方法包括:
步骤201、令当前字节c1=c,当前字节的起始位d1=d,当前未处理位数a1=a,索引i处的值v=0;
步骤202、计算当前字节c1的剩余位数r,r=8-d1;
步骤203、判断r是否小于当前未处理位数a1,若是,则进入步骤204;否则进入步骤208;
步骤204、取出当前字节c1从起始位d1开始连续r位的数,按照取出顺序组合成第一二进制数,并获取所述第一二进制数的值vh;
步骤206、令当前未处理位数a1=a1-r,当前字节c1=c1+1,当前字节的起始位d1=0;
步骤207、返回步骤202;
步骤208、取出当前字节c1从起始位d1开始连续a1位的数,按照取出顺序组合成第二二进制数,并获取所述第二二进制数的值ve;
改写数据的方法,应用于改写按照上述所述的优化数据内存分配的方法分配内存的数据,包括:
S1、若改写索引为i,则改写数据起始位置为s,s=i*a;
S3、确定起始字节c的位置偏移量d,d=s%8;
S4、从起始位s开始,根据位置偏移量值将连续a位数改写为目标值。
步骤S4中,所述从起始位s开始,根据位置偏移量将连续a位数改写为目标值的具体方法包括:
步骤401、令当前字节c1=c,当前字节的起始位d1=d,当前未处理位数a1=a,目标值为c2;
步骤402、确定当前字节c1的剩余位数r,r=8-d1;
步骤403、判断r是否小于当前未处理位数a1,若是,则进入步骤404;否则进入步骤407;
步骤404、将当前字节c1从起始位d1位开始的连续r位用目标值c2(二进制)从0位开始的连续r位替换;
步骤406、返回步骤402;
步骤407、将当前字节c1从起始位d1位开始的连续a1位用目标值c2(二进制)替代。
实施例1
实施例2
基于状态数N=400的数据,设置数据参数M=200,查找内存中的数据:
例如查找内存中索引i=13的数据,内存中结构示意图如4;
S101、计算起始位位置s=i*a=13*9=117;
S103、计算起始字节的位置偏移量d=s%8=117%8=5;
S104、令当前字节c1=c=14,当前字节的起始位d1=d=5,当前未处理位数a1=a=9,索引i处的值v=0;
S105、计算当前字节c1的剩余位数r,r=8-d1=3;
S106、r<a1成立,取出当前字节c1从起始位d1开始连续r位的数,按照取出顺序组合成第一二进制数,并获取所述第一二进制数的值vh,vh=5(二进制101);
S108、令当前未处理位数a1=a1-r=9-3=6,当前字节c1=c1+1=15,当前字节的起始位d1=0;
S109、计算当前字节c1的剩余位数:r=8-d1=8;
S110、r<a1不成立,取出当前字节c1从起始位d1开始连续a1位的数,按照取出顺序组合成第二二进制数(101010),并获取所述第二二进制数的值ve=42;
实施例3
基于状态数N=400的数据,设置数据参数M=200,改写内存中的数据:
例如,改写内存中索引i=13的数据为333,内存结构示意图如图5;
S201、计算起始位位置s=i*a=13*9=117;
S203、计算起始字节的位置偏移量d=s%8=117%8=5;
S204、令当前字节c1=c=14,当前字节的起始位d1=d=5,当前未处理位数a1=a=9,目标值c2=333(二进制:101001101);
S205、计算当前字节c1的剩余位数r,r=8-d1=3;
S206、r<a1成立,将当前字节c1从起始位d1位开始的连续r位用目标值c2从0位开始的连续r位(101)替换,如图6所示;
S208、计算当前字节c1的剩余位数r,r=8-d1=8;
S209、r<a1不成立,取出目标值,将当前字节c1从起始位d1位开始的连续a1位用目标值c2(二进制)替代,如图7所示。
本发明根据数据实际状态数以及相关数据参数来确定所需要的内存空间,相对于现有技术,更加节约内存空间;并且提供一种查找数据以及改写数据的方法,在查找数据以及改写数据时,都设置了当前字节的起始位以及当前剩余的位数,其中当前字节的起始位与选择的索引以及当前每个状态所需的最小位数相关联,能够更快定位所查找或改写数据的准确位置,进一步提高了查找以及改写的效率;
并且将当前字节的剩余位数与当前未处理位数进行比较,当前字节的剩余位数小于当前未处理位数时,循环查找,避免了出现遗漏的情况。
综上所述,实现了根据数据状态数以及数据参数为数据分配内存,极大地节约了内存空间,提高了内存的利用率以及数据查找与改写的效率。
Claims (2)
1.查找数据的方法,其特征在于,包括:
步骤1、若查找索引为i,则查找数据起始位置为s,s=i*a,a=INT[log2(N-1)]+1,a为每种状态所需的最小位数,N为数据状态数;
步骤3、确定起始字节c的位置偏移量d,d=s%8;
步骤4、从起始位s开始,根据位置偏移量值连续取a位数组合成二进制数,将二进制数的值作为索引i处的最终值,具体包括:
步骤201、令当前字节c1=c,当前字节的起始位d1=d,当前未处理位数a1=a,索引i处的值v=0;
步骤202、计算当前字节c1的剩余位数r,r=8-d1;
步骤203、判断r是否小于当前未处理位数a1,若是,则进入步骤204;否则进入步骤208;
步骤204、取出当前字节c1从起始位d1开始连续r位的数,按照取出顺序组合成第一二进制数,并获取所述第一二进制数的值vh;
步骤206、令当前未处理位数a1=a1-r,当前字节c1=c1+1,当前字节的起始位d1=0;
步骤207、返回步骤202;
步骤208、取出当前字节c1从起始位d1开始连续a1位的数,按照取出顺序组合成第二二进制数,并获取所述第二二进制数的值ve;
2.改写数据的方法,其特征在于,包括:
S1、若改写索引为i,则改写数据起始位置为s,s=i*a,a=INT[log2(N-1)]+1,a为每种状态所需的最小位数,N为数据状态数;
S3、确定起始字节c的位置偏移量d,d=s%8;
S4、从起始位s开始,根据位置偏移量值将连续a位数改写为目标值,具体包括:
步骤401、令当前字节c1=c,当前字节的起始位d1=d,当前未处理位数a1=a,目标值为c2;
步骤402、确定当前字节c1的剩余位数r,r=8-d1;
步骤403、判断r是否小于当前未处理位数a1,若是,则进入步骤404;否则进入步骤407;
步骤404、将当前字节c1从起始位d1位开始的连续r位用目标值c2从0位开始的连续r位替换;
步骤406、返回步骤402;
步骤407、将当前字节c1从起始位d1位开始的连续a1位用目标值c2替代。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110350895.1A CN113032291B (zh) | 2021-03-31 | 2021-03-31 | 查找数据与改写数据的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110350895.1A CN113032291B (zh) | 2021-03-31 | 2021-03-31 | 查找数据与改写数据的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113032291A CN113032291A (zh) | 2021-06-25 |
CN113032291B true CN113032291B (zh) | 2023-05-26 |
Family
ID=76453177
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110350895.1A Active CN113032291B (zh) | 2021-03-31 | 2021-03-31 | 查找数据与改写数据的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113032291B (zh) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101043421A (zh) * | 2006-03-21 | 2007-09-26 | 上海激动通信有限公司 | 一种基于内存的ip地址最长匹配快速查找的方法 |
CN110287190A (zh) * | 2019-06-25 | 2019-09-27 | 四川深度在线广告传媒有限公司 | 一种大数据分析自定义编码储存结构及编码、解码方法 |
CN111552651A (zh) * | 2020-06-28 | 2020-08-18 | 江苏金智科技股份有限公司 | 一种物联网终端轻量级操作系统的混合内存管理方法 |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102184165B (zh) * | 2011-04-22 | 2013-01-02 | 烽火通信科技股份有限公司 | 一种节省内存的lcs算法 |
CN102541758A (zh) * | 2011-12-22 | 2012-07-04 | 深圳市融创天下科技股份有限公司 | 一种内存分配与释放的方法、系统和终端设备 |
CN103077017B (zh) * | 2012-12-27 | 2016-09-28 | 惠州市德赛西威汽车电子股份有限公司 | 一种嵌入式内存复用方法 |
CN103678152A (zh) * | 2014-01-08 | 2014-03-26 | 广州思泰信息技术有限公司 | 一种小内存微型控制器零碎片的动态内存分配方法 |
WO2016097795A1 (en) * | 2014-12-14 | 2016-06-23 | Via Alliance Semiconductor Co., Ltd. | Multi-mode set associative cache memory dynamically configurable to selectively allocate into all or subset or tis ways depending on mode |
CN108647150A (zh) * | 2018-04-14 | 2018-10-12 | 温州职业技术学院 | 一种内存管理方法及系统 |
CN110795247B (zh) * | 2019-10-28 | 2023-06-30 | 天津津航计算技术研究所 | 一种应用于mcu的高效动态内存管理方法 |
CN111880991B (zh) * | 2020-07-23 | 2022-09-13 | Oppo广东移动通信有限公司 | 内存优化方法、装置、电子设备及计算机可读存储介质 |
-
2021
- 2021-03-31 CN CN202110350895.1A patent/CN113032291B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101043421A (zh) * | 2006-03-21 | 2007-09-26 | 上海激动通信有限公司 | 一种基于内存的ip地址最长匹配快速查找的方法 |
CN110287190A (zh) * | 2019-06-25 | 2019-09-27 | 四川深度在线广告传媒有限公司 | 一种大数据分析自定义编码储存结构及编码、解码方法 |
CN111552651A (zh) * | 2020-06-28 | 2020-08-18 | 江苏金智科技股份有限公司 | 一种物联网终端轻量级操作系统的混合内存管理方法 |
Also Published As
Publication number | Publication date |
---|---|
CN113032291A (zh) | 2021-06-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105207678B (zh) | 一种改进型lz4压缩算法的硬件实现系统 | |
CN108304409B (zh) | 一种基于进位的Sketch数据结构的数据频度估计方法 | |
EP2147380A1 (en) | System and method of managing indexation of flash memory | |
US20050187898A1 (en) | Data Lookup architecture | |
CN109951541A (zh) | 一种流水号生成方法及服务器 | |
CN113032291B (zh) | 查找数据与改写数据的方法 | |
CN112817538A (zh) | 数据处理的方法、装置、设备和存储介质 | |
US6901476B2 (en) | Variable key type search engine and method therefor | |
CN111259203B (zh) | 数据压缩器以及数据压缩方法 | |
CN101483844B (zh) | 索引移动电话号码的方法和系统 | |
CN112269784A (zh) | 一种基于硬件实现的哈希表结构以及插入、查询和删除方法 | |
CN113626432B (zh) | 一种支持任意Key值的自适应基数树的改进方法 | |
CN107294855B (zh) | 一种高性能计算网络下的tcp查找优化方法 | |
CN115577149A (zh) | 一种数据处理方法、装置、设备及可读存储介质 | |
CN101271466B (zh) | 一种基于自适应字典树的电子词典单词检索方法 | |
CN113900622A (zh) | 一种基于fpga的数据信息快速排序方法、系统、设备及存储介质 | |
CN114268608A (zh) | 一种地址段检索方法、装置、电子设备及存储介质 | |
CN116719476B (zh) | 一种手机号的压缩存储方法、装置、电子设备及存储介质 | |
JP3350385B2 (ja) | 符号生成方法および符号化方法 | |
CN110807092A (zh) | 数据处理方法及装置 | |
CN117874314B (zh) | 一种基于大数据处理的信息可视化方法及系统 | |
WO2021004543A1 (zh) | 范围信息的编码、匹配方法和计算机存储介质 | |
WO2001091132A2 (en) | The implementation of a content addressable memory using a ram-cell structure | |
CN115630072A (zh) | 黑名单的存储方法、查找方法及装置 | |
EP1227413A1 (en) | Method for optimised locating of indexed records of static data with different length |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |