CN113032291B - 查找数据与改写数据的方法 - Google Patents

查找数据与改写数据的方法 Download PDF

Info

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
Application number
CN202110350895.1A
Other languages
English (en)
Other versions
CN113032291A (zh
Inventor
赵凌峰
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Sichuan Changhong Air Conditioner Co Ltd
Original Assignee
Sichuan Changhong Air Conditioner Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Sichuan Changhong Air Conditioner Co Ltd filed Critical Sichuan Changhong Air Conditioner Co Ltd
Priority to CN202110350895.1A priority Critical patent/CN113032291B/zh
Publication of CN113032291A publication Critical patent/CN113032291A/zh
Application granted granted Critical
Publication of CN113032291B publication Critical patent/CN113032291B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • YGENERAL 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
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE 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/00Energy 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

本发明涉及计算机内存领域,具体涉及一种优化数据内存分配的方法、及查找数据与改写数据的方法,实现了根据数据状态数以及数据参数为数据分配内存,极大地节约了内存空间,提高了内存的利用率。本发明优化数据内存分配的方法,包括:若数据状态数为N,则每种状态所需的最小位数为a,a=INT[log2(N‑1)]+1;输入数据参数M,获取数据所需最小内存b,
Figure DDA0003002344000000011
所述N>0,M>0;为所述数据分配b字节的内存空间。本发明适用于数据内存分配。

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;
输入数据参数M,获取数据所需最小内存b,
Figure GDA0004171943400000011
所述N>0,M>0;
为所述数据分配b字节的内存空间。
查找数据的方法,应用于查找按照上述所述的优化数据内存分配的方法分配内存的数据,包括:
步骤1、若查找索引为i,则查找数据起始位置为s,s=i*a;
步骤2、确定数据起始位置s所在内存的起始字节c,
Figure GDA0004171943400000012
步骤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
步骤205、计算索引i处的值v,
Figure GDA0004171943400000021
步骤206、令当前未处理位数a1=a1-r,当前字节c1=c1+1,当前字节的起始位d1=0;
步骤207、返回步骤202;
步骤208、取出当前字节c1从起始位d1开始连续a1位的数,按照取出顺序组合成第二二进制数,并获取所述第二二进制数的值ve
步骤209、索引i处的最终值为v,
Figure GDA0004171943400000022
改写数据的方法,应用于改写按照上述所述的优化数据内存分配的方法分配内存的数据,包括:
S1、若改写索引为i,则改写数据起始位置为s,s=i*a;
S2、确定数据起始位置s所在的内存起始字节c,
Figure GDA0004171943400000023
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位替换;
步骤405、令目标值
Figure GDA0004171943400000031
当前未处理位数a1=a1-r,当前字节c1=c1+1,当前字节的起始位d1=0;
步骤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;
步骤102、输入数据参数M,获取数据所需最小内存b,
Figure GDA0004171943400000032
所述N>0,M>0;
步骤103、为所述数据分配b字节的内存空间。
查找数据的方法,应用于查找按照上述所述的优化数据内存分配的方法分配内存的数据,包括:
步骤1、若查找索引为i,则查找数据起始位置为s,s=i*a;
步骤2、确定数据起始位置s所在内存的起始字节c,
Figure GDA0004171943400000033
步骤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
步骤205、计算索引i处的值v,
Figure GDA0004171943400000041
步骤206、令当前未处理位数a1=a1-r,当前字节c1=c1+1,当前字节的起始位d1=0;
步骤207、返回步骤202;
步骤208、取出当前字节c1从起始位d1开始连续a1位的数,按照取出顺序组合成第二二进制数,并获取所述第二二进制数的值ve
步骤209、索引i处的最终值为v,
Figure GDA0004171943400000042
改写数据的方法,应用于改写按照上述所述的优化数据内存分配的方法分配内存的数据,包括:
S1、若改写索引为i,则改写数据起始位置为s,s=i*a;
S2、确定数据起始位置s所在的内存起始字节c,
Figure GDA0004171943400000043
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位替换;
步骤405、令目标值
Figure GDA0004171943400000044
当前未处理位数a1=a1-r,当前字节c1=c1+1,当前字节的起始位d1=0;
步骤406、返回步骤402;
步骤407、将当前字节c1从起始位d1位开始的连续a1位用目标值c2(二进制)替代。
实施例1
对于状态数N=400的数据,设置数据参数M=200,每个状态所需的最小位数为a=INT[log2(400-1)]+1=9,所需要的内存空间
Figure GDA0004171943400000051
因此为所述数据分配225字节的内存空间。
实施例2
基于状态数N=400的数据,设置数据参数M=200,查找内存中的数据:
例如查找内存中索引i=13的数据,内存中结构示意图如4;
S101、计算起始位位置s=i*a=13*9=117;
S102、计算起始字节
Figure GDA0004171943400000052
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);
S107、计算索引i处的值v,
Figure GDA0004171943400000053
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;
S111、索引i处的最终值为v,
Figure GDA0004171943400000054
实施例3
基于状态数N=400的数据,设置数据参数M=200,改写内存中的数据:
例如,改写内存中索引i=13的数据为333,内存结构示意图如图5;
S201、计算起始位位置s=i*a=13*9=117;
S202、计算起始字节
Figure GDA0004171943400000055
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所示;
S207、令目标值
Figure GDA0004171943400000061
(二进制101001),当前未处理位数a1=a1-r=9-3=6,当前字节c1=c1+1=15,当前字节的起始位d1=0;
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为数据状态数;
步骤2、确定数据起始位置s所在内存的起始字节c,
Figure FDA0004171943390000011
步骤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
步骤205、计算索引i处的值v,
Figure FDA0004171943390000012
步骤206、令当前未处理位数a1=a1-r,当前字节c1=c1+1,当前字节的起始位d1=0;
步骤207、返回步骤202;
步骤208、取出当前字节c1从起始位d1开始连续a1位的数,按照取出顺序组合成第二二进制数,并获取所述第二二进制数的值ve
步骤209、索引i处的最终值为v,
Figure FDA0004171943390000013
2.改写数据的方法,其特征在于,包括:
S1、若改写索引为i,则改写数据起始位置为s,s=i*a,a=INT[log2(N-1)]+1,a为每种状态所需的最小位数,N为数据状态数;
S2、确定数据起始位置s所在的内存起始字节c,
Figure FDA0004171943390000014
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位替换;
步骤405、令目标值
Figure FDA0004171943390000021
当前未处理位数a1=a1-r,当前字节c1=c1+1,当前字节的起始位d1=0;
步骤406、返回步骤402;
步骤407、将当前字节c1从起始位d1位开始的连续a1位用目标值c2替代。
CN202110350895.1A 2021-03-31 2021-03-31 查找数据与改写数据的方法 Active CN113032291B (zh)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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广东移动通信有限公司 内存优化方法、装置、电子设备及计算机可读存储介质

Patent Citations (3)

* Cited by examiner, † Cited by third party
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