本发明专利技术公开了一种编码方法及系统,方法包括:给定一个序号m,找出按升序排列的包含d位1的二进制数中的第m个数,以实现由序号m到二进制数的映射。本发明专利技术能够实现特殊形式二进制数与自然数之间的转换,提升了用户体验。
【技术实现步骤摘要】
一种编码方法及系统
本专利技术涉及编码
,尤其涉及一种编码方法及系统。
技术介绍
生活中某些标记可以用特殊形式的二进制数来表示,但是这种形式的二进制数在日常使用上并不方便,人们更习惯于使用自然数。例如,如图8所示,在一个由n行m列的棋盘上,将棋子沿横向和纵向以最少的步数从A点移动到B点,很显然有很多条路径。如果将棋子的横向移动一格编码为0,纵向移动一格编码为1,则每条路径可以编码为一个包含m个0与n个1的二进制数,这种标记方法简单而直观,便于计算机处理。然而,在日常的使用中,人们更习惯使用自然数标记每条路径,即第1条,第2条,……;同时使用(m+n)位二进制数标记路径,存在较大冗余,可以使用较短的数对路径进行标记。而在有些场合,需要实现对包含固定数量‘1’的二进制数与其对应序号间的双向转换。因此,如何实现特殊形式二进制数与自然数之间的转换,是一项亟待解决的问题。
技术实现思路
有鉴于此,本专利技术提供了一种编码方法,能够实现特殊形式二进制数与自然数之间的转换,提升了用户体验。本专利技术提供了一种编码方法,包括:给定一个序号m,找出按升序排列的包含d位1的二进制数中的第m个数,以实现由序号m到二进制数的映射。优选地,所述方法还包括:将所述二进制数映射为其序号m,其中,所述二进制数的长度为n位,d为其包含的1的个数,m为按从小到大顺序排列该二进制数的序号。优选地,所述给定一个序号m,找出按升序排列的包含d位1的二进制数中的第m个数,以实现由序号m到二进制数的映射包括以下步骤:步骤1、如果d=1,那么从右到左将第m位设为1,将所有其他的位都设为0,该数字即可确定;步骤2、若d>1且m=1时,将最右边的d位全部设为1,该数字即可确定;步骤3、若d>1,m>1且则第(i+1)位设为1,令d=d-1,若d=1,前往步骤4,否则返回步骤2;步骤4、若d=1,则将自右到左的第m位设为1,至此映射完成。优选地,所述将所述二进制数映射为其序号m包括以下步骤:步骤1、对于包含d位1的n位二进制数,其中,d≥1,若d=1,则m是这个唯一的1在从右到左的顺序中所处的位置;步骤2、在d>1的情况下,从左到右扫描数字,令第一个1的位置为p,其中,p≤n;步骤3、分解m包含令d=d-1,继续从右到左扫描数字,直到令下一个1的位置为p,若d>1且d≠p,则重复当前步骤3;步骤4、若d=1且d≠p,则最后的序号m是当前p与所有已识别的组合数的和;步骤5、若d=p>1,则最后的序号m是1的总个数与所有已识别的组合数的和。一种编码系统,包括:自然数到二进制数的映射模块,用于给定一个序号m,找出按升序排列的包含d位1的二进制数中的第m个数,以实现由序号m到二进制数的映射。优选地,所述系统还包括:二进制数到自然数的映射模块,用于将所述二进制数映射为其序号m,其中,所述二进制数的长度为n位,d为其包含的1的个数,m为按从小到大顺序排列该二进制数的序号。优选地,所述自然数到二进制数的映射模块在执行给定一个序号m,找出按升序排列的包含d位1的二进制数中的第m个数,以实现由序号m到二进制数的映射时,具体包括以下步骤:步骤1、如果d=1,那么从右到左将第m位设为1,将所有其他的位都设为0,该数字即可确定;步骤2、若d>1且m=1时,将最右边的d位全部设为1,该数字即可确定;步骤3、若d>1,m>1且则第(i+1)位设为1,令d=d-1,若d=1,前往步骤4,否则返回步骤2;步骤4、若d=1,则将自右到左的第m位设为1,至此映射完成。优选地,所述二进制数到自然数的映射模块在将所述二进制数映射为其序号m时,具体包括以下步骤:步骤1、对于包含d位1的n位二进制数,其中,d≥1,若d=1,则m是这个唯一的1在从右到左的顺序中所处的位置;步骤2、在d>1的情况下,从左到右扫描数字,令第一个1的位置为p,其中,p≤n;步骤3、分解m包含令d=d-1,继续从右到左扫描数字,直到令下一个1的位置为p,若d>1且d≠p,则重复当前步骤3;步骤4、若d=1且d≠p,则最后的序号m是当前p与所有已识别的组合数的和;步骤5、若d=p>1,则最后的序号m是1的总个数与所有已识别的组合数的和。综上所述,本专利技术公开了一种编码方法,给定一个序号m,找出按升序排列的包含d位1的二进制数中的第m个数,以实现由序号m到二进制数的映射。由此可以看出,本专利技术能够实现特殊形式二进制数与自然数之间的转换,提升了用户体验。附图说明为了更清楚地说明本专利技术实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本专利技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。图1为本专利技术公开的一种编码方法实施例1的流程图;图2为本专利技术公开的一种编码方法实施例2的流程图;图3为本专利技术公开的由序号m到二进制数的映射流程图;图4为本专利技术公开的由二进制数到序号m的映射流程图;图5为本专利技术公开的包含3位1的6位二进制数;图6为本专利技术公开的一种编码系统实施例1的结构示意图;图7为本专利技术公开的一种编码系统实施例2的结构示意图;图8为本专利技术公开的n行m列的棋盘上,从A到B的各条路径示意图。具体实施方式下面将结合本专利技术实施例中的附图,对本专利技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本专利技术一部分实施例,而不是全部的实施例。基于本专利技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本专利技术保护的范围。如图1所示,为本专利技术公开的一种编码方法实施例1的流程图,所述方法可以包括以下步骤:S101、给定一个序号m,找出按升序排列的包含d位1的二进制数中的第m个数,以实现由序号m到二进制数的映射。具体的,如图3所示,当要实现由序号m到二进制数的映射时,包括以下步骤:步骤1、如果d=1,那么从右到左将第m位设为1,将所有其他的位都设为0,该数字即可确定;步骤2、若d>1且m=1时,将最右边的d位全部设为1,该数字即可确定;步骤3、若d>1,m>1且则第(i+1)位设为1,令d=d-1,若d=1,前往步骤4,否则返回步骤2;步骤4、若d=1,则将自右到左的第m位设为1,至此映射完成。综上所述,本专利技术能够实现自然数到特殊形式二进制数转换,提升了用户体验。如图2所示,为本专利技术公开的一种编码方法实施例2的流程图,所述方法可以包括以下步骤:S201、给定一个序号m,找出按升序排列的包含d位1的二进制数中的第m个本文档来自技高网...
【技术保护点】
1.一种编码方法,其特征在于,包括:/n给定一个序号m,找出按升序排列的包含d位1的二进制数中的第m个数,以实现由序号m到二进制数的映射。/n
【技术特征摘要】
1.一种编码方法,其特征在于,包括:
给定一个序号m,找出按升序排列的包含d位1的二进制数中的第m个数,以实现由序号m到二进制数的映射。
2.根据权利要求1所述的方法,其特征在于,还包括:
将所述二进制数映射为其序号m,其中,所述二进制数的长度为n位,d为其包含的1的个数,m为按从小到大顺序排列该二进制数的序号。
3.根据权利要求2所述的方法,其特征在于,所述给定一个序号m,找出按升序排列的包含d位1的二进制数中的第m个数,以实现由序号m到二进制数的映射包括以下步骤:
步骤1、如果d=1,那么从右到左将第m位设为1,将所有其他的位都设为0,该数字即可确定;
步骤2、若d>1且m=1时,将最右边的d位全部设为1,该数字即可确定;
步骤3、若d>1,m>1且则第(i+1)位设为1,令若d=1,前往步骤4,否则返回步骤2;
步骤4、若d=1,则将自右到左的第m位设为1,至此映射完成。
4.根据权利要求3所述的方法,其特征在于,所述将所述二进制数映射为其序号m包括以下步骤:
步骤1、对于包含d位1的n位二进制数,其中,d≥1,若d=1,则m是这个唯一的1在从右到左的顺序中所处的位置;
步骤2、在d>1的情况下,从左到右扫描数字,令第一个1的位置为p,其中,p≤n;
步骤3、分解m包含令d=d-1,继续从右到左扫描数字,直到令下一个1的位置为p,若d>1且d≠p,则重复当前步骤3;
步骤4、若d=1且d≠p,则最后的序号m是当前p与所有已识别的组合数的和;
步骤5、若d=p>1,则最后的序号m是1的总个数与所有已识别的组合数的和。
5.一种编码系统,其特征在于,包括:
自然数到二进制...
【专利技术属性】
技术研发人员:苗付友,于跃,孟珂举,陆长彬,
申请(专利权)人:中国科学技术大学,
类型:发明
国别省市:安徽;34
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。