CN114124111A - 一种编码方法及装置 - Google Patents

一种编码方法及装置 Download PDF

Info

Publication number
CN114124111A
CN114124111A CN202010903282.1A CN202010903282A CN114124111A CN 114124111 A CN114124111 A CN 114124111A CN 202010903282 A CN202010903282 A CN 202010903282A CN 114124111 A CN114124111 A CN 114124111A
Authority
CN
China
Prior art keywords
code
bits
bch
puncturing
sequence
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.)
Pending
Application number
CN202010903282.1A
Other languages
English (en)
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.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies 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 Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Priority to CN202010903282.1A priority Critical patent/CN114124111A/zh
Priority to PCT/CN2021/112747 priority patent/WO2022048431A1/zh
Publication of CN114124111A publication Critical patent/CN114124111A/zh
Priority to US18/176,217 priority patent/US20230308117A1/en
Pending legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/13Linear codes
    • H03M13/15Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
    • H03M13/151Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes using error location or error correction polynomials
    • H03M13/152Bose-Chaudhuri-Hocquenghem [BCH] codes
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/35Unequal or adaptive error protection, e.g. by providing a different level of protection according to significance of source information or by adapting the coding according to the change of transmission channel characteristics
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/61Aspects and characteristics of methods and arrangements for error correction or error detection, not provided for otherwise
    • H03M13/615Use of computational or mathematical techniques
    • H03M13/616Matrix operations, especially for generator matrices or check matrices, e.g. column or row permutations
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/61Aspects and characteristics of methods and arrangements for error correction or error detection, not provided for otherwise
    • H03M13/618Shortening and extension of codes
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/63Joint error correction and other techniques
    • H03M13/635Error control coding in combination with rate matching
    • H03M13/6362Error control coding in combination with rate matching by puncturing
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/65Purpose and implementation aspects
    • H03M13/6508Flexibility, adaptability, parametrability and configurability of the implementation
    • H03M13/6516Support of multiple code parameters, e.g. generalized Reed-Solomon decoder for a variety of generator polynomials or Galois fields
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04MTELEPHONIC COMMUNICATION
    • H04M13/00Party-line systems
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/033Theoretical methods to calculate these checking codes

Landscapes

  • Physics & Mathematics (AREA)
  • Engineering & Computer Science (AREA)
  • Mathematical Physics (AREA)
  • Probability & Statistics with Applications (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Pure & Applied Mathematics (AREA)
  • Algebra (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Computing Systems (AREA)
  • Signal Processing (AREA)
  • Error Detection And Correction (AREA)

Abstract

一种编码方法及装置,用以提出一种BCH码的构造和编码方案,得到的BCH码的码长和码率比较灵活,以适用于无线通信的灵活性信道编码的需求。该方法为:根据第一BCH码确定第一编码参数;所述第一BCH码为待编码的BCH码;所述第一编码参数为第一码或为第一码的生成矩阵;所述第一码的码长为n,信息比特长度为k;所述n大于0,所述k大于0;基于所述第一编码参数进行BCH码编码。这样可以得到的BCH码的码长和码率比较灵活,以适用于无线通信的灵活性信道编码的需求。

Description

一种编码方法及装置
技术领域
本申请涉及通信技术领域,尤其涉及一种编码方法及装置。
背景技术
博斯乔赫里霍克文黑姆码(Bose–Chaudhuri–Hocquenghem codes,BCH码)是一种重要的线性分组码,是少数可以通过代数结构保证所构造的码的码距的纠错码之一。在中/高码率时,其最小码距在很多情况下为当前码长码率下已知纠错码最小码距的上限。因为码距是纠错码的一大关键性能指标,因此BCH码在工程中有广泛的应用。
随着译码算法和硬件能力的提升,BCH码在下一代无线通信中的应用范围可能越来越广。然而,当前BCH码所支持的码长和码率有限,可能无法支持无线通信中短包的码长码率灵活调度的需求。
发明内容
本申请提供一种编码方法及装置,用以提出一种BCH码的构造和编码方案,以使得到的BCH码的码长和码率比较灵活,以适用于无线通信的灵活性信道编码的需求。
第一方面,本申请提供了一种编码方法,该方法可以包括:根据第一BCH码确定第一编码参数,并基于所述第一编码参数进行BCH码编码;所述第一BCH码为待编码的BCH码;所述第一编码参数为第一码或为第一码的生成矩阵;所述第一码的码长为n,信息比特长度为k;所述n大于0,所述k大于0。通过上述方法可以使得到的BCH码的码长和码率比较灵活,以适用于无线通信的灵活性信道编码的需求。
在一种可能的设计中,根据第一BCH码确定第一编码参数,具体方法可以为:确定所述第一BCH码的生成矩阵;根据所述第一BCH码的生成矩阵和打孔序列,确定所述第一编码参数,所述打孔序列中包括的元素为所述第一BCH码的生成矩阵中的列号。这样可以准确得到所述第一编码参数以使后续准确进行编码,并且实现复杂度较低。
在一种可能的设计中,根据所述第一BCH码的生成矩阵和打孔序列,确定所述第一编码参数,具体方法可以为:取所述第一BCH码的生成矩阵的最后k行,得到第一矩阵;根据所述打孔序列,依次对所述第一矩阵中所述打孔序列中的元素对应的位置进行打孔,得到所述第一编码参数,所述第一编码参数为包括k行,n列的矩阵。这样可以准确得到所述第一编码参数以使后续准确进行编码,并且实现复杂度较低。
在一种可能的设计中,所述第一码的码率k/n可以小于或者等于码率阈值。这样可以使得在这种情况下选择通过打孔的方法得到所述第一编码参数最优。
在一种可能的设计中,根据第一BCH码确定第一编码参数,具体方法可以为:确定所述第一BCH码的生成矩阵;根据所述第一BCH码的生成矩阵和缩短序列,确定所述第一编码参数,所述缩短序列中包括的元素为所述第一BCH码的生成矩阵中的列号。这样可以准确得到所述第一编码参数以使后续准确进行编码,并且实现复杂度较低。
在一种可能的设计中,根据所述第一BCH码的生成矩阵和缩短序列,确定所述第一编码参数,具体方法可以为:根据所述缩短序列,依次在所述生成矩阵中对所述缩短序列中的元素对应的位置置零,得到第二矩阵;从所述第二矩阵最后一行开始选取,跳过所述缩短序列中的元素对应的位置存在1的行,直至选取到k行为止,得到所述第一编码参数,所述第一编码参数为包括k行,n列的矩阵。这样可以准确得到所述第一编码参数以使后续准确进行编码,并且实现复杂度较低。
在一种可能的设计中,所述一码的码率k/n可以大于或者等于码率阈值。这样可以在这种情况下使得选择通过缩短的方法得到所述第一编码参数最优。
在一种可能的设计中,所述码率阈值可以为1/4、1/2、3/4、1/3、2/3、1/8、3/8、5/8、7/8、1/16、3/16、5/16、7/16、9/16、11/16、13/16或15/16中的任意一个。
在一种可能的设计中,确定所述第一BCH码的生成矩阵,具体方法可以为:根据所述第一BCH码的生成多项式组确定所述第一BCH码的生成矩阵,所述第一BCH码的生成多项式组包括以下多项式:g1,g2,g3,……,gx,x为大于或者等于1的整数。多项式是数学上一个公知的名词术语:在数学中,由若干个单项式相加组成的代数式叫做多项式,由数或字母的积组成的代数式叫做单项式,单独的一个数或一个字母也叫做单项式;这里任一个g表示一个多项式。这样可以准确得到所述第一BCH码的生成矩阵,以使后续得到准确的第一编码参数。
在一种可能的设计中,根据所述第一BCH码的生成多项式组确定所述第一BCH码的生成矩阵,具体方法可以为:分别基于所述第一BCH码的生成多项式组中的每一个多项式对应的行向量以及根据所述行向量右移位得到的行向量,确定所述第一BCH码的生成矩阵;所述第一BCH码的生成矩阵每一行对应的行向量长度等于所述第一BCH码的母码码长,行数等于所述母码码长;其中,第1行为多项式g1对应的行向量,第2行、……、第k1-k2行分别为第一行对应的行向量右移1位、……、右移k1-k2-1位得到的行向量;……;第N-ki+1行为多项式gi对应的行向量,第N-ki+2行、……、第N-kj行为第N-ki+1行对应的行向量右移1位、……、右移ki-kj-1位得到的行向量;……;第N-kx+1行为多项式gx对应的行向量,第N-kx+2行为第N-kx+1行对应的行向量右移1位、……、右移kx-1位得到的行向量;其中,k1为g1对应的信息比特长度,k2为g2对应的信息比特长度,ki为gi对应的信息比特长度,kj为gj对应的信息比特长度,kx为gx对应的信息比特长度,j=i+1,N为所述母码码长。这样可以准确得到所述第一BCH码的生成矩阵,以使后续得到准确的第一编码参数。
在一种可能的设计中,所述第一编码参数为所述第一码时,根据第一BCH码确定第一编码参数,具体方法可以为:在所述第一BCH码的生成多项式组中确定目标多项式gi;根据所述gi确定第二码,所述第二码的码长为N,信息比特长度为ki,所述N为所述第一BCH码的母码码长,所述ki为所述gi对应的信息比特长度;根据所述第二码确定所述第一码。这样可以准确得到所述第一码,以使后续准确进行编码;其中,所述gi是所述生成多项式组包括的多项式g1,g2,g3,……,gx中的一个,x为大于或者等于1的整数。
在一种可能的设计中,根据所述第二码确定所述第一码,具体方法可以为:对所述第二码缩短,得到第三码;当所述第三码的码率小于k/n时,对所述第三码打孔,得到所述第一码;当所述第三码的码率大于所述k/n时,对所述第三码增加冗余比特,得到所述第一码;所述第三码的信息比特长度为k。这样可以灵活地得到所述第一码。
在一种可能的设计中,对所述第二码缩短,得到第三码,具体方法可以为:将所述第二码缩短ki-k个比特,得到第三码,所述第三码的码长为N+k-ki。这样可以准确得到所述第三码。
在一种可能的设计中,所述gi对应的所述ki是所述多项式组中包含的多项式对应的信息比特长度中的第一信息比特长度,所述第一信息比特长度为小于N+k-n的最大值;对所述第三码打孔,得到所述第一码,具体方法可以为:对所述第三孔打孔至n个比特,得到所述第一码。这样可以在所述第三码的码率小于k/n的情况下,准确得到所述第一码。
在一种可能的设计中,对所述第三孔打孔至n个比特,得到所述第一码,具体方法可以为:对所述第三码打孔N+k-ki-n个比特,得到所述第一码。这样可以准确地得到所述第一码,以使后续准确进行编码。
在一种可能的设计中,对所述第三码打孔N+k-ki-n个比特,具体方法可以为:当所述第一BCH码为非系统码时,打孔所述第三码的前N+k-ki-n个比特;或者,打孔所述第三码的后N+k-ki-n个比特;或者,按照预设的打孔序列,打孔所述第三码中的N+k-ki-n个比特;当所述第一BCH码为系统码时,打孔所述第三码非系统位中的前N+k-ki-n个比特;或者,打孔所述第三码非系统位中的后N+k-ki-n个比特;或者,打孔所述第三码系统位中的前N+k-ki-n个比特;或者,打孔所述第三码系统位中的后N+k-ki-n个比特;或者,按照所述预设的所述打孔序列打孔所述第三码非系统位中的N+k-ki-n个比特;或者,按照所述打孔序列打孔所述第三码系统位中的N+k-ki-n个比特;或者,按照所述打孔序列打孔所述第三码中的N+k-ki-n个比特。这样可以根据实际情况灵活地进行对第三码的打孔。
在一种可能的设计中,当所述第一BCH码为扩展BCH eBCH码时,打孔所述eBCH码中的扩展比特,其中所述扩展比特为信息比特的奇偶校验比特。
在一种可能的设计中,所述gi对应的所述ki是所述多项式组中包含的多项式对应的信息比特长度中的第二信息比特长度,所述第二信息比特长度为大于N+k-n的最小值;对所述第三码增加冗余比特,得到所述第一码,具体方法可以为:对所述第三码增加冗余比特至n个比特,得到所述第一码。这样可以在所述第三码的码率大于k/n的情况下,准确得到所述第一码。
在一种可能的设计中,对所述第三码增加冗余比特至n个比特,得到所述第一码,具体方法可以为:对所述第三码增加n-N+k-ki个冗余比特,得到所述第一码。这样可以准确地得到所述第一码,以使后续准确进行编码。
在一种可能的设计中,对所述第三码增加n-N-k+ki个冗余比特,具体方法可以为:对所述第三码增加n-N-k+ki个奇偶校验比特;或者,增加所述第三码的n-N-k+ki个比特的重复比特;或者,对所述第三码增加A个奇偶校验比特和B个重复比特,A+B=n-N-k+ki。这样可以通过不同的方式灵活实现对所述第三码增加冗余比特。
在一种可能的设计中,对所述第三码增加n-N-k+ki个奇偶校验比特,具体方法可以为:对所述第三码的k个信息比特生成奇偶校验和,得到一个奇偶校验比特;对所述k个信息比特中的k-d个信息比特生成就奇偶校验和,得到一个奇偶校验比特;直至得到n-N-k+ki个奇偶校验比特为止;其中,所述d为1,2,……k-1;或者,对所述第三码的k个信息比特进行单纯形码编码,得到n-N-k+ki个奇偶校验比特。这样可以通过不同的方式灵活实现对所述第三码增加冗余比特。
在一种可能的设计中,当所述第一BCH码为非系统码时,增加所述第三码的n-N-k+ki个比特的重复比特,具体方法可以为:对所述第三码增加所述第三码的前n-N-k+ki个比特的重复比特;或者,对所述第三码增加所述第三码的后n-N-k+ki个比特的重复比特;或者,按照预设的序列,对所述第三码增加所述预设的序列对应的所述第三码中的n-N-k+ki个比特的重复比特。这样可以通过不同的方式灵活实现对所述第三码增加冗余比特。
在一种可能的设计中,当所述第一BCH码为系统码时,增加所述第三码的n-N-k+ki个比特的重复比特,具体方法可以为:对所述第三码增加所述第三码的前n-N-k+ki个系统位比特的重复比特;或者,对所述第三码增加所述第三码的后n-N-k+ki个系统位比特的重复比特;或者,按照预设的序列,对所述第三码增加所述预设的序列对应的所述第三码中的n-N-k+ki个系统位比特的重复比特。这样可以通过不同的方式灵活实现对所述第三码增加冗余比特。
在一种可能的设计中,对所述第三码增加A个奇偶校验比特和B个重复比特,具体方法可以为:对所述第三码增加所述A个奇偶校验比特后,增加所述B个重复比特;或者,对所述第三码增加所述B个重复比特后,增加所述A个奇偶校验比特;或者,对所述第三码增加的所述A个奇偶校验比特和所述B个重复比特中,任一个奇偶校验比特相邻的比特为重复比特,任一个重复比特的相邻比特为奇偶校验比特。这样可以通过不同的方式灵活实现对所述第三码增加冗余比特。
在一种可能的设计中,将所述第二码缩短ki-k个比特,具体方法可以为:当所述第一BCH码为非系统码时,缩短所述第二码的前ki-k个比特;或者,缩短所述第二码的后ki-k个比特;或者,按照预设的缩短序列缩短所述第二码的ki-k个比特;当所述第一BCH码为系统码时,缩短所述第二码系统位中的前ki-k个比特;或者,缩短所述第二码系统位中的后ki-k个比特;或者,按照所述缩短序列缩短所述第二码系统位中的ki-k个比特。这样可以根据实际情况通过不同的方法灵活实现对所述第二码的缩短。
第二方面,本申请还提供了一种编码装置,该编码装置具有实现上述第一方面或第一方面的各个可能的设计示例中的方法的功能模块。功能可以通过硬件实现,也可以通过硬件执行相应的软件实现。硬件或软件包括一个或多个与上述功能相对应的模块。
在一个可能的设计中,编码装置的结构中包括存储器和处理器,可选的还包括收发器,收发器用于收发数据,以及用于与通信系统中的其他设备进行通信交互,处理器被配置为支持编码装置执行上述第一方面或第一方面的各个可能的设计示例中相应的功能。存储器与处理器耦合,其保存编码装置必要的程序指令和数据。
第三方面,本申请实施例提供了一种通信系统,可以包括上述提及的编码装置等。
第四方面,本申请实施例提供的一种计算机可读存储介质,该计算机可读存储介质存储有程序指令,当程序指令在计算机上运行时,使得计算机执行本申请实施例第一方面及其任一可能的设计。示例性的,计算机可读存储介质可以是计算机能够存取的任何可用介质。以此为例但不限于:计算机可读介质可以包括非瞬态计算机可读介质、随机存取存储器(random-access memory,RAM)、只读存储器(read-only memory,ROM)、电可擦除可编程只读存储器(electrically EPROM,EEPROM)、CD-ROM或其他光盘存储、磁盘存储介质或者其他磁存储设备、或者能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质。
第五方面,本申请实施例提供一种包括计算机程序代码或指令的计算机程序产品,当其在计算机上运行时,使得计算机实现上述第一方面及其任一可能的设计的方法。
第六方面,本申请还提供了一种芯片,所述芯片与存储器耦合,用于读取并执行所述存储器中存储的程序指令,以实现上述第一方面及其任一可能的设计的方法。
上述第二方面至第六方面中的各个方面以及各个方面可能达到的技术效果请参照上述针对第一方面或第一方面中的各种可能方案可以达到的技术效果说明,这里不再重复赘述。
附图说明
图1为本申请提供的一种通信系统的架构示意图;
图2为本申请提供的一种编码方法的流程图;
图3为本申请提供的一种打孔和缩短的示意图;
图4为本申请提供的一种打孔序列和缩短序列的存储示意图;
图5为本申请提供的一种构造码的流程示意图;
图6为本申请提供的一种构造码的生成过程示意图;
图7为本申请提供的另一种构造码的流程示意图;
图8为本申请提供的一种码距性能示意图;
图9为本申请提供的一种性能仿真示意图;
图10为本申请提供的一种性能仿真示意图;
图11为本申请提供的一种编码装置的结构示意图;
图12为本申请提供的一种编码装置的结构图。
具体实施方式
下面将结合附图对本申请作进一步地详细描述。
本申请实施例提供一种编码方法及装置,用以提出一种BCH码的构造和编码方案,得到的BCH码的码长和码率比较灵活,以适用于无线通信的灵活性信道编码的需求。其中,本申请方法和装置基于同一技术构思,由于方法及装置解决问题的原理相似,因此装置与方法的实施可以相互参见,重复之处不再赘述。
在本申请的描述中,“第一”、“第二”等词汇,仅用于区分描述的目的,而不能理解为指示或暗示相对重要性,也不能理解为指示或暗示顺序。
为了更加清晰地描述本申请实施例的技术方案,下面结合附图,对本申请实施例提供的编码方法及装置进行详细说明。
本申请实施例提供的编码方法可以应用于各种无线通信场景(包含但不局限于海量机器类通信(mass machine type communications,mMTC)和超高可靠低时延通信(ultrareliable low latency communication,uRLLC)等),用于信令或者较短数据的传输,包括上行,下行蜂窝通信或者各种用户中心的分布式网络等等。
图1示出了本申请实施例提供的编码方法适用的一种可能的通信系统的架构,所述通信系统的架构中可以包括网络设备和终端设备,其中:
所述网络设备为具有无线收发功能的设备或可设置于该网络设备的芯片,该网络设备包括但不限于:基站(gNB)、无线网络控制器(radio network controller,RNC)、节点B(Node B,NB)、基站控制器(base station controller,BSC)、基站收发台(basetransceiver station,BTS)、家庭基站(例如,home evolved NodeB,或home Node B,HNB)、基带单元(baseband unit,BBU),无线保真(wireless fidelity,WIFI)系统中的接入点(access point,AP)、无线中继节点、无线回传节点、传输点(transmission and receptionpoint,TRP或者transmission point,TP)等,还可以为构成gNB或传输点的网络节点,如基带单元(BBU),或,分布式单元(distributed unit,DU)等。
在一些部署中,gNB可以包括集中式单元(centralized unit,CU)和DU。gNB还可以包括射频单元(radio unit,RU)。CU实现gNB的部分功能,DU实现gNB的部分功能,比如,CU实现无线资源控制(radio resource control,RRC),分组数据汇聚层协议(packet dataconvergence protocol,PDCP)层的功能,DU实现无线链路控制(radio link control,RLC)、媒体接入控制(media access control,MAC)和物理(physical,PHY)层的功能。由于RRC层的信息最终会变成PHY层的信息,或者,由PHY层的信息转变而来,因而,在这种架构下,高层信令,如RRC层信令或PHCP层信令,也可以认为是由DU发送的,或者,由DU+RU发送的。可以理解的是,网络设备可以为CU节点、或DU节点、或包括CU节点和DU节点的设备。此外,CU可以划分为接入网RAN中的网络设备,也可以将CU划分为核心网CN中的网络设备,对此不作限定。
所述终端设备也可以称为用户设备(user equipment,UE)、接入终端、用户单元、用户站、移动站、移动台、远方站、远程终端、移动设备、用户终端、终端、无线通信设备、用户代理或用户装置。本申请的实施例中的终端设备可以是手机(mobile phone)、智能手机、平板电脑(Pad)、带无线收发功能的电脑、虚拟现实(virtual reality,VR)终端设备、增强现实(augmented reality,AR)终端设备、工业控制(industrial control)中的无线终端、无人驾驶(self driving)中的无线终端、远程医疗(remote medical)中的无线终端、智能电网(smart grid)中的无线终端、运输安全(transportation safety)中的无线终端、智慧城市(smart city)中的无线终端、智慧家庭(smart home)中的无线终端、个人数字助理(personal digital assistant,PDA)、车载的移动装置等等。本申请的实施例对应用场景不做限定。本申请中将具有无线收发功能的终端设备及可设置于前述终端设备的芯片统称为终端设备。
在本申请中,所述网络设备和所述终端设备均可以作为发送端或接收端来执行编码方法。
需要说明的是,图1所示的通信系统的架构仅仅作为示例,图1并不限定本申请适应的通信系统的架构的组成。图1中还可以包括更多的设备,本申请此处不再示出。
目前,BCH码是一种重要的线性分组码,是少数可以通过代数结构保证所构造的码的码距的纠错码之一。在中/高码率时,其最小码距在很多情况下为当前码长码率下已知纠错码最小码距的上限。因为码距是纠错码的一大关键性能指标,因此BCH码在工程中有广泛的应用。BCH码具有高效的译码方法。其中坎普-梅西(Berlekamp–Massey,BM)译码算法是一种极其简洁高效的硬译码算法。若输入信号是对数似然比(log likehood ratio,LLR)软值,BCH码也可以用分阶统计译码(或有序统计译码)(ordered statistic decoding,OSD)类译码算法获得接近理论极限的性能。
而现有的BCH码只支持特定的码长、码率。具体地,码长N为2的整数次幂减一,即2m-1(BCH码),或2的整数次幂,即2m(扩展(extended,e)BCH码)。对于码率来说,也只支持特地的值,例如对于N=16的eBCH码,只支持信息比特数(信息比特长度)K=2,6,8,12,16;对于N=32的eBCH码,只支持信息比特数K=2,7,12,17,22,27,32等。
随着译码算法和硬件能力的提升,BCH码在下一代无线通信标准中的应用范围可能变广。然而,当前BCH码所支持的码长和码率有限,无法支持无线通信中短包的码长码率灵活调度的需求。基于此,本申请提出一种BCH码的构造和编码方案,得到的BCH码的码长和码率比较灵活,以适用于无线通信的灵活性信道编码的需求。
在下面的方法介绍中,以执行主体为编码装置为例说明,所述编码装置可以是图1所示的通信系统中的终端设备或网络设备或者其他设备。
本申请实施例提供的一种编码方法,适用于图1所示的通信系统。参阅图2所示,该方法的具体流程可以包括:
步骤201:编码装置根据第一BCH码确定第一编码参数;所述第一BCH码为待编码的BCH码;所述第一编码参数为第一码或为第一码的生成矩阵;所述第一码的码长为n,信息比特长度为k;所述n大于0,所述k大于0。
其中,所述第一BCH码可以为普通的BCH码,也可以为eBCH码。
步骤202:所述编码装置基于所述第一编码参数进行BCH码编码。
在一种可选的实施方式中,当所述第一编码参数为第一码的生成矩阵时,所述编码装置根据第一BCH码确定第一编码参数,具体可以包括以下两种方法:
方法a1:所述编码装置确定所述第一BCH码的生成矩阵,并根据所述第一BCH码的生成矩阵和打孔序列,确定所述第一编码参数,所述打孔序列中包括的元素为所述第一BCH码的生成矩阵中的列号(column index)。
方法a2:所述编码装置确定所述第一BCH码的生成矩阵,并根据所述第一BCH码的生成矩阵和缩短序列,确定所述第一编码参数,所述缩短序列中包括的元素为所述第一BCH码的生成矩阵中的列号。
在上述方法a1和a2中,所述编码装置确定所述第一BCH码的生成矩阵,具体方法可以为:所述编码装置根据所述第一BCH码的生成多项式组确定所述第一BCH码的生成矩阵,所述第一BCH码的生成多项式组可以包括以下多项式:g1,g2,g3,……,gx,x为大于或者等于1的整数。多项式是数学上一个公知的名词术语:在数学中,由若干个单项式相加组成的代数式叫做多项式,由数或字母的积组成的代数式叫做单项式,单独的一个数或一个字母也叫做单项式;这里任一个g表示一个多项式。
其中,BCH码本身具有嵌套特性,高码率的BCH码的生成多项式是低码率的BCH码的生成多项式的一个因子,因此可以用一组嵌套的多项式来表示一组嵌套的BCH码。例如,第一BCH码的生成多项式组g1,g2,g3,……,gx,其对应了一组BCH码的码率是r1=k1/N=1,r2=k2/N,r3=k3/N,……,rx=kx/N;对应了一组eBCH码的码率是r01=k1/N0=1,r02=k2/N0,r03=k3/N0,……,r0x=kx/N0。其中,r1,……rx以及r01,……r0x为码率,k1,……,kx为信息比特长度。根据BCH的性质,可以得出r1>r2>r3>……>rx,且k1>k2>k3>……>kx,且N=2m-1是对应BCH码的母码长,或N0=2m是对应eBCH码的母码长。其中,g1=1是最高码率的BCH码对应的生成多项式,gx是最低码率的BCH码对应的生成多项式。如果i<j,则gi对应的BCH码率比gj对应的BCH码率更高,gi是gj的一个因子。具体的,可以规定两种多项式表示形式:
第一种:规定一组完整的BCH多项式g1,g2,g3,……,gx进行编码,当码长为BCH母码长2m-1且码率rj<r<ri时,利用gi进行编码。这时ki会大于信息比特长度k,需要在编码时在k个信息比特的基础上补ki-k个零。如BCH码为系统码,则编完码后,相应的ki-k个比特为零,此种情况下所述编码装置不发送ki-k个为零的比特,此相当于缩短(shorten)。
第二种:可以只规定最低码率对应的多项式gx以及它的因式分解,即gx=g’x*……*g’3*g’2*g’1,其中任意一个码率对应的多项式可以由gx的因子相乘获得:gi=g’i*……*g’3*g’2*g’1。
对于eBCH码,先按上述步骤编成(N,k)的码,再增加一个码字比特,其是k个信息比特的奇偶校验值。
例如,假设N=15的BCH码,其生成多项式组包括g1=1,g2=x^4+x^3+1,g3=x^8+x^4+x^2+x+1,g4=x^10+x^9+x^8+x^6+x^5+x^2+1,其原BCH码的码率为r1=15/15,r2=11/15,r3=7/15,r4=5/15,其原eBCH码的码率为r1=15/16,r2=11/16,r3=7/16,r4=5/16,对应的信息比特长度为k1=15,k2=11,k3=7,k4=5。
若目标BCH码的码率为2/3=8/12,码长为12,信息比特长度为8,则上例示出的原BCH码并不支持。这时,可以先将8个信息比特补三个零,变成11个比特,然后使用移位寄存器进行BCH码编码,得到的码字长度为15。由于其中3个比特已知为零,则所述编码装置无需发送,实际发送码字比特数为15-3=12。同时,实际承载信息的比特数为11-3=8。这样就完成了对(12,8)的新BCH码的支持。
具体的,所述编码装置根据所述第一BCH码的生成多项式组确定所述第一BCH码的生成矩阵,具体方法可以为:分别基于所述第一BCH码的生成多项式组中的每一个多项式对应的行向量以及根据所述行向量右移位得到的行向量,确定所述第一BCH码的生成矩阵;所述第一BCH码的生成矩阵每一行对应的行向量长度等于所述第一BCH码的母码码长,行数等于所述母码码长;其中,第1行为多项式g1对应的行向量,第2行、……、第k1-k2行分别为第一行对应的行向量右移1位、……、右移k1-k2-1位得到的行向量;……;第N-ki+1行为多项式gi对应的行向量,第N-ki+2行、……、第N-kj行为第N-ki+1行对应的行向量右移1位、……、右移ki-kj-1位得到的行向量;……;第N-kx+1行为多项式gx对应的行向量,第N-kx+2行为第N-kx+1行对应的行向量右移1位、……、右移kx-1位得到的行向量;其中,k1为g1对应的信息比特长度,k2为g2对应的信息比特长度,ki为gi对应的信息比特长度,kj为gj对应的信息比特长度,kx为gx对应的信息比特长度,j=i+1,N为所述母码码长。
例如,生成多项式组g=x^4+x^3+1,其对应的行向量为[11001],通过补零扩展到母码长N=15后的向量为[110010000000000]。其右移1位记为g(1)其行向量形式为[011001000000000]。其右移t位的N长行向量记为g(t)。
若当所述第一BCH码为普通的BCH码时,所述第一BCH码的生成矩阵GN的规模可以为N×N。若所述第一BCH码为eBCH码时,生成矩阵GN0的规模可以为(N+1)×(N+1)。可以通过以下两种方法,产生两种等价的eBCH码的生成矩阵:
方法b1:
Figure BDA0002660489470000091
其中1为高度为N的全1列向量,0为宽度为N的全0行向量,GN为BCH码的嵌套生成矩阵。
方法b2:
Figure BDA0002660489470000092
其中1为宽度/高度为N的全1行/列向量,0为宽度/高度为N的全0行/列向量,GN-1为BCH码的生成矩阵的前N-1行和前N-1列组成的矩阵。
沿用上例,例如N=15的BCH码,其生成矩阵GN可以为:
1 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 1 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 1 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 1 0 0 0 0 0 0 0 0 0 0 0
1 1 0 0 1 0 0 0 0 0 0 0 0 0 0
0 1 1 0 0 1 0 0 0 0 0 0 0 0 0
0 0 1 1 0 0 1 0 0 0 0 0 0 0 0
0 0 0 1 1 0 0 1 0 0 0 0 0 0 0
1 0 0 0 1 0 1 1 1 0 0 0 0 0 0
0 1 0 0 0 1 0 1 1 1 0 0 0 0 0
1 1 1 0 1 1 0 0 1 0 1 0 0 0 0
0 1 1 1 0 1 1 0 0 1 0 1 0 0 0
0 0 1 1 1 0 1 1 0 0 1 0 1 0 0
0 0 0 1 1 1 0 1 1 0 0 1 0 1 0
0 0 0 0 1 1 1 0 1 1 0 0 1 0 1
对于N=16的eBCH码,由方法b1生成的生成矩阵GN0可以为:
1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0
1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0
1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0
1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0
1 1 1 0 0 1 0 0 0 0 0 0 0 0 0 0
1 0 1 1 0 0 1 0 0 0 0 0 0 0 0 0
1 0 0 1 1 0 0 1 0 0 0 0 0 0 0 0
1 0 0 0 1 1 0 0 1 0 0 0 0 0 0 0
1 1 0 0 0 1 0 1 1 1 0 0 0 0 0 0
1 0 1 0 0 0 1 0 1 1 1 0 0 0 0 0
1 1 1 1 0 1 1 0 0 1 0 1 0 0 0 0
1 0 1 1 1 0 1 1 0 0 1 0 1 0 0 0
1 0 0 1 1 1 0 1 1 0 0 1 0 1 0 0
1 0 0 0 1 1 1 0 1 1 0 0 1 0 1 0
1 0 0 0 0 1 1 1 0 1 1 0 0 1 0 1
对于N=16的eBCH码,由方法2生成的生成矩阵GN0可以为:
1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0
1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0
1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0
1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0
1 1 1 0 0 1 0 0 0 0 0 0 0 0 0 0
1 0 1 1 0 0 1 0 0 0 0 0 0 0 0 0
1 0 0 1 1 0 0 1 0 0 0 0 0 0 0 0
1 0 0 0 1 1 0 0 1 0 0 0 0 0 0 0
1 1 0 0 0 1 0 1 1 1 0 0 0 0 0 0
1 0 1 0 0 0 1 0 1 1 1 0 0 0 0 0
1 1 1 1 0 1 1 0 0 1 0 1 0 0 0 0
1 0 1 1 1 0 1 1 0 0 1 0 1 0 0 0
1 0 0 1 1 1 0 1 1 0 0 1 0 1 0 0
1 0 0 0 1 1 1 0 1 1 0 0 1 0 1 0
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
其中,在上述各个矩阵的示例中字体加粗的元素分别对应了举例的BCH码的生成多项式g1、g2、g3和g4对应的行向量。
具体的,生成该生成矩阵GN后,可以对任意(N,k)或任意(N0,k)码进行编码。具体方法为,取生成矩阵GN或GN0的靠底部的k行,作为(N,k)或(N0,k)码的生成矩阵GN,k或GN0,k。编码方法与现有线性分组码相同,即c=u*GN,k,其中u为k长信息比特向量,c为N长码字比特向量。
在一种可选的实施方式中,在上述方法a1中,所述编码装置根据所述第一BCH码的生成矩阵和打孔序列,确定所述第一编码参数,具体方法可以为:所述编码装置取所述第一BCH码的生成矩阵的最后k行,得到第一矩阵;然后所述编码装置根据所述打孔序列,依次对所述第一矩阵中所述打孔序列中的元素对应的位置进行打孔,得到所述第一编码参数,所述第一编码参数为包括k行,n列的矩阵。
具体的,所述编码装置根据所述打孔序列,依次对所述第一矩阵中所述打孔序列中的元素对应的位置进行打孔,得到所述第一编码参数,也即打孔所述打孔序列对应的前N-n列的比特(或N0-n个比特),剩余n列的比特。
例如,上述打孔过程可以如图3中(a)所述的打孔的示意图所示。
在一种可选的实施方式中,在上述方法a1中,所述编码装置根据所述第一BCH码的生成矩阵和缩短序列,确定所述第一编码参数,具体方法可以为:所述编码装置根据所述缩短序列,依次对所述缩短序列中的元素对应的位置置零,得到第二矩阵;从所述第二矩阵最后一行开始选取,跳过所述缩短序列中的元素对应的位置存在1的行,直至选取到k行为止,得到所述第一编码参数,所述第一编码参数为包括k行,n列的矩阵。
例如,上述缩短过程可以如图3中(b)所述的缩短的示意图所示。
具体的,上述打孔或者缩短过程是借助N0/2长的打孔序列或者缩短序列实现。由于N0或N长的码最多需要存储N0/2长的打孔序列或缩短序列(因为如果打孔或缩短数量大于N0/2个比特,那就应该直接使用N0/2或N0/2-1母码长的BCH码了)。因此,如果要支持最大母码长Nmax长的所有BCH码,只需要存一个Nmax长的打孔序列,或者存一个Nmax长的缩短序列即可。
具体存储方式可以为:首先存最小母码长Nmin对应的打孔序列或者缩短序列(Nmin/2长),在其之后再存次小母码长2*Nmin对应的打孔序列或/缩短序列(Nmin长),以此类推,依次存储Nmax/4,Nmax/2。这样打孔/缩短序列的总长度不超过Nmax。例如,打孔(Puncture)序列和缩短(Shorten)序列的存储可以如图4所示。
可选的,当目标码率小于或者等于码率阈值可以选择上述方法a1,当所述目标码率大于或者等于码率阈值可以选择上述方法a2,所述目标码率为所述第一码的码率k/n。其中,所述码率阈值(Rthr)可以为1/4、1/2、3/4、1/3、2/3、1/8、3/8、5/8、7/8、1/16、3/16、5/16、7/16、9/16、11/16、13/16或15/16等。
在另一种可选的实施方式中,所述第一编码参数为所述第一码时,所述编码装置根据第一BCH码确定第一编码参数,具体方法可以为:所述编码装置在所述第一BCH码的生成多项式组中确定目标多项式gi;根据所述gi确定第二码,所述第二码的码长为N,信息比特长度为ki,所述N为所述第一BCH码的母码码长,所述ki为所述gi对应的信息比特长度;根据所述第二码确定所述第一码。
其中,所述gi对应的所述ki可以是所述多项式组中包含的多项式对应的信息比特长度中的第一信息比特长度,所述第一信息比特长度为小于N+k-n的最大值;也即,ki是{k1,k2,k3,…,kx}中满足ki<N+k-n的最大可选值。或者,所述gi对应的所述ki可以是所述多项式组中包含的多项式对应的信息比特长度中的第二信息比特长度,所述第二信息比特长度为大于N+k-n的最小值,也即ki是{k1,k2,k3,…,kx}中满足ki>N+k-n的最小可选值。
具体的,所述编码装置根据所述第二码确定所述第一码,具体方法可以为:所述编码装置对所述第二码缩短,得到第三码;当所述第三码的码率小于k/n时,所述编码装置对所述第三码打孔,得到所述第一码;当所述第三码的码率大于所述k/n时,所述编码装置对所述第三码增加冗余比特,得到所述第一码;所述第三码的信息比特长度为k。这样可以结合通过打孔和缩短使得到的第一码以最大程度地保留原BCH码的码距特性。
一种可选的实施方式中,所述编码装置对所述第二码缩短,得到第三码,具体方法可以为:所述编码装置将所述第二码缩短ki-k个比特,得到第三码,所述第三码的码长可以为N+k-ki。
示例性的,所述编码装置将所述第二码缩短ki-k个比特,具体方可以为:当所述第一BCH码为非系统码时,所述编码装置缩短所述第二码的前ki-k个比特;或者,所述编码装置缩短所述第二码的后ki-k个比特;或者,所述编码装置按照预设的缩短序列缩短所述第二码的ki-k个比特;当所述第一BCH码为系统码时,所述编码装置缩短所述第二码系统位中的前ki-k个比特;或者,所述编码装置缩短所述第二码系统位中的后ki-k个比特;或者,所述编码装置按照所述缩短序列缩短所述第二码系统位中的ki-k个比特。
在一种可选的实施方式中,当所述gi对应的所述ki是所述多项式组中包含的多项式对应的信息比特长度中的第一信息比特长度时,所述第三码的码率小于k/n;在这种情况下,所述编码装置对所述第三码打孔,得到所述第一码,具体方法可以为:所述编码装置对所述第三孔打孔至n个比特,得到所述第一码。
具体的,所述编码装置对所述第三孔打孔至n个比特,得到所述第一码,具体方法可以为:所述编码装置对所述第三码打孔N+k-ki-n个比特,得到所述第一码。
进一步地,所述编码装置对所述第三码打孔N+k-ki-n个比特,具体方法可以为:当所述第一BCH码为非系统码时,所述编码装置打孔所述第三码的前N+k-ki-n个比特;或者,所述编码装置打孔所述第三码的后N+k-ki-n个比特;或者,所述编码装置按照预设的打孔序列,打孔所述第三码中的N+k-ki-n个比特;当所述第一BCH码为系统码时,所述编码装置打孔所述第三码非系统位中的前N+k-ki-n个比特;或者,所述编码装置打孔所述第三码非系统位中的后N+k-ki-n个比特;或者,所述编码装置打孔所述第三码系统位中的前N+k-ki-n个比特;或者,所述编码装置打孔所述第三码系统位中的后N+k-ki-n个比特;或者,所述编码装置按照所述预设的所述打孔序列打孔所述第三码非系统位中的N+k-ki-n个比特;或者,所述编码装置按照所述打孔序列打孔所述第三码系统位中的N+k-ki-n个比特;或者,所述编码装置按照所述打孔序列打孔所述第三码中的N+k-ki-n个比特。
在一种具体的示例中,当所述第一BCH码为eBCH码时,所述编码装置可以先打孔所述eBCH码中的扩展比特,其中所述扩展比特为信息比特的奇偶校验比特;然后再按照上述打孔方法进行打孔。
在另一种可选的实施方式中,所述gi对应的所述ki是所述多项式组中包含的多项式对应的信息比特长度中的第二信息比特长度时,所述第三码的码率大于所述k/n;在这种情况下,所述编码装置对所述第三码增加冗余比特,得到所述第一码,具体方法可以为:所述编码装置对所述第三码增加冗余比特至n个比特,得到所述第一码。
具体的,所述编码装置对所述第三码增加冗余比特至n个比特,得到所述第一码,具体方法可以为:所述编码装置对所述第三码增加n-N+k-ki个冗余比特,得到所述第一码。
进一步地,所述编码装置对所述第三码增加n-N-k+ki个冗余比特,具体可以方法可以为:所述编码装置对所述第三码增加n-N-k+ki个奇偶校验比特;或者,所述编码装置增加所述第三码的n-N-k+ki个比特的重复比特;或者,所述编码装置对所述第三码增加A个奇偶校验比特和B个重复比特,A+B=n-N-k+ki。
在一种示例中,所述编码装置对所述第三码增加n-N-k+ki个奇偶校验比特,具体方法可以为:所述编码装置对所述第三码的k个信息比特生成奇偶校验和,得到一个奇偶校验比特;对所述k个信息比特中的k-d个信息比特生成就奇偶校验和,得到一个奇偶校验比特;直至得到n-N-k+ki个奇偶校验比特为止;其中,所述d为1,2,……k-1;或者,所述编码装置对所述第三码的k个信息比特进行单纯形码(simplex)编码,得到n-N-k+ki个奇偶校验比特。
例如,所述编码装置选择的全部k个信息比特,产生它们的奇偶校验和(即单比特校验码(single parity check codes,SPC)编码)。如总比特数不足n,则再在k个信息比特中选择k-1个信息比特,产生这k-1个信息比特的奇偶校验和;由于在k个信息比特中选择k-1个信息比特最多有nchoosk(k,k-1)种情况,因此最多可以产生nchoosk(k,k-1)个此类奇偶校验比特,按此方法直到传送满n个码字比特为止。如果仍然没有补足n个比特,则再在k个信息比特中选择k-2个信息比特,产生这k-2个信息比特的奇偶校验和,由于在k个信息比特中选择k-2个信息比特最多有nchoosk(k,k-2)种情况,因此最多可以产生nchoosk(k,k-2)个此类奇偶校验比特,按此方法直到传送满n个码字比特为止。依此类推,依次产生k-3个信息比特的校验和,……,直到产生2个信息比特的校验和,1个比特的校验和(即该比特本身)为止,由此得到n-N-k+ki个奇偶校验比特。
在一种示例中,当所述第一BCH码为非系统码时,所述编码装置增加所述第三码的n-N-k+ki个比特的重复比特,具体方法可以为:所述编码装置对所述第三码增加所述第三码的前n-N-k+ki个比特的重复比特;或者,所述编码装置对所述第三码增加所述第三码的后n-N-k+ki个比特的重复比特;或者,所述编码装置按照预设的序列,对所述第三码增加所述预设的序列对应的所述第三码中的n-N-k+ki个比特的重复比特。
另一种示例中,当所述第一BCH码为系统码时,所述编码装置增加所述第三码的n-N-k+ki个比特的重复比特,具体方法可以为:所述编码装置对所述第三码增加所述第三码的前n-N-k+ki个系统位比特的重复比特;或者,所述编码装置对所述第三码增加所述第三码的后n-N-k+ki个系统位比特的重复比特;或者,所述编码装置按照预设的序列,对所述第三码增加所述预设的序列对应的所述第三码中的n-N-k+ki个系统位比特的重复比特。
一种示例中,所述编码装置对所述第三码增加A个奇偶校验比特和B个重复比特,具体方法可以为:所述编码装置对所述第三码增加所述A个奇偶校验比特后,增加所述B个重复比特;或者,所述编码装置对所述第三码增加所述B个重复比特后,增加所述A个奇偶校验比特;或者,所述编码装置对所述第三码增加的所述A个奇偶校验比特和所述B个重复比特中,任一个奇偶校验比特相邻的比特为重复比特,任一个重复比特的相邻比特为奇偶校验比特。
在一种具体的情况中,若第一BCH码为eBCH码时,由于码字比特中已经包含了全部k个信息比特的奇偶校验和,因此无需增加奇偶校验比特,按照上述方法增加其他冗余比特即可。
例如,通过上述方法,基于N=15的BCH码,构造n=10,k=8的码,若用生成矩阵表示,流程可以如图5所示。其中,对应的生成过程可以如图6所示,图6中虚框中的为得到的(n=10,k=8)码的生成矩阵。
又例如,通过上述方法,基于N=16的eBCH码,构造n=10,k=8的码,流程可以如图7所示。
上述得到第一编码参数的过程也即是速率匹配的过程。
通过上述得到第一编码参数之后,可以采用现有的编码方法进行BCH码编码,例如线性分组码的编码方法等。
采用本申请实施例提供的编码方法,可以使得到的BCH码的码长和码率比较灵活,以适用于无线通信的灵活性信道编码的需求。
基于上述实施例,本申请实施例提供的编码方法中所述涉及到的BCH码或eBCH码的生成矩阵根据母码长不同,生成矩阵也不同。示例性的,下面列举了本申请适用的母码长为3,4,7,8,15,16,31,32,63,64,127,128,255或256的BCH码和eBCH码的生成矩阵。
(1)4×4的eBCH码的生成矩阵的形式可以为:
1 0 0 0
1 1 0 0
1 0 1 0
1 1 1 1
其对应的BCH码的生成矩阵的形式可以为以上矩阵的2-4行,2-4列组成的子矩阵。
(2)8×8的eBCH码的生成矩阵的形式可以为:
1 0 0 0 0 0 0 0
1 1 0 0 0 0 0 0
1 0 1 0 0 0 0 0
1 0 0 1 0 0 0 0
1 1 1 0 1 0 0 0
1 0 1 1 0 1 0 0
1 0 0 1 1 0 1 0
1 1 1 1 1 1 1 1
1 0 0 0 0 0 0 0
1 1 0 0 0 0 0 0
1 0 1 0 0 0 0 0
1 0 0 1 0 0 0 0
1 1 1 0 1 0 0 0
1 0 1 1 0 1 0 0
1 0 0 1 1 0 1 0
1 0 0 0 1 1 0 1
其对应的BCH码的生成矩阵的形式可以为以上任一矩阵的2-8行,2-8列组成的子矩阵。
(3)16×16的eBCH码的生成矩阵的形式可以为:
1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0
1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0
1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0
1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0
1 1 1 0 0 1 0 0 0 0 0 0 0 0 0 0
1 0 1 1 0 0 1 0 0 0 0 0 0 0 0 0
1 0 0 1 1 0 0 1 0 0 0 0 0 0 0 0
1 0 0 0 1 1 0 0 1 0 0 0 0 0 0 0
1 1 0 0 0 1 0 1 1 1 0 0 0 0 0 0
1 0 1 0 0 0 1 0 1 1 1 0 0 0 0 0
1 1 1 1 0 1 1 0 0 1 0 1 0 0 0 0
1 0 1 1 1 0 1 1 0 0 1 0 1 0 0 0
1 0 0 1 1 1 0 1 1 0 0 1 0 1 0 0
1 0 0 0 1 1 1 0 1 1 0 0 1 0 1 0
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0
1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0
1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0
1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0
1 1 1 0 0 1 0 0 0 0 0 0 0 0 0 0
1 0 1 1 0 0 1 0 0 0 0 0 0 0 0 0
1 0 0 1 1 0 0 1 0 0 0 0 0 0 0 0
1 0 0 0 1 1 0 0 1 0 0 0 0 0 0 0
1 1 0 0 0 1 0 1 1 1 0 0 0 0 0 0
1 0 1 0 0 0 1 0 1 1 1 0 0 0 0 0
1 1 1 1 0 1 1 0 0 1 0 1 0 0 0 0
1 0 1 1 1 0 1 1 0 0 1 0 1 0 0 0
1 0 0 1 1 1 0 1 1 0 0 1 0 1 0 0
1 0 0 0 1 1 1 0 1 1 0 0 1 0 1 0
1 0 0 0 0 1 1 1 0 1 1 0 0 1 0 1
其对应的BCH码的生成矩阵的形式可以为以上任一矩阵的2-16行,2-16列组成的子矩阵。
(4)32×32的eBCH码的生成矩阵的形式可以为:
1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
1 1 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
1 0 1 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
1 0 0 1 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
1 0 0 0 1 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
1 0 0 0 0 1 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
1 1 0 0 1 0 1 1 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
1 0 1 0 0 1 0 1 1 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
1 0 0 1 0 0 1 0 1 1 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
1 0 0 0 1 0 0 1 0 1 1 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
1 0 0 0 0 1 0 0 1 0 1 1 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
1 1 1 1 1 0 1 0 1 1 1 1 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
1 0 1 1 1 1 0 1 0 1 1 1 1 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0
1 0 0 1 1 1 1 0 1 0 1 1 1 1 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0
1 0 0 0 1 1 1 1 0 1 0 1 1 1 1 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0
1 0 0 0 0 1 1 1 1 0 1 0 1 1 1 1 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0
1 1 0 1 0 1 0 1 1 0 1 1 0 0 1 0 0 0 1 1 0 1 0 0 0 0 0 0 0 0 0 0
1 0 1 0 1 0 1 0 1 1 0 1 1 0 0 1 0 0 0 1 1 0 1 0 0 0 0 0 0 0 0 0
1 0 0 1 0 1 0 1 0 1 1 0 1 1 0 0 1 0 0 0 1 1 0 1 0 0 0 0 0 0 0 0
1 0 0 0 1 0 1 0 1 0 1 1 0 1 1 0 0 1 0 0 0 1 1 0 1 0 0 0 0 0 0 0
1 0 0 0 0 1 0 1 0 1 0 1 1 0 1 1 0 0 1 0 0 0 1 1 0 1 0 0 0 0 0 0
1 1 1 1 0 0 1 0 0 0 1 0 1 0 1 1 1 1 0 1 1 0 1 0 0 1 1 0 0 0 0 0
1 0 1 1 1 0 0 1 0 0 0 1 0 1 0 1 1 1 1 0 1 1 0 1 0 0 1 1 0 0 0 0
1 0 0 1 1 1 0 0 1 0 0 0 1 0 1 0 1 1 1 1 0 1 1 0 1 0 0 1 1 0 0 0
1 0 0 0 1 1 1 0 0 1 0 0 0 1 0 1 0 1 1 1 1 0 1 1 0 1 0 0 1 1 0 0
1 0 0 0 0 1 1 1 0 0 1 0 0 0 1 0 1 0 1 1 1 1 0 1 1 0 1 0 0 1 1 0
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
1 1 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
1 0 1 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
1 0 0 1 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
1 0 0 0 1 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
1 0 0 0 0 1 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
1 1 0 0 1 0 1 1 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
1 0 1 0 0 1 0 1 1 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
1 0 0 1 0 0 1 0 1 1 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
1 0 0 0 1 0 0 1 0 1 1 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
1 0 0 0 0 1 0 0 1 0 1 1 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
1 1 1 1 1 0 1 0 1 1 1 1 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
1 0 1 1 1 1 0 1 0 1 1 1 1 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0
1 0 0 1 1 1 1 0 1 0 1 1 1 1 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0
1 0 0 0 1 1 1 1 0 1 0 1 1 1 1 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0
1 0 0 0 0 1 1 1 1 0 1 0 1 1 1 1 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0
1 1 0 1 0 1 0 1 1 0 1 1 0 0 1 0 0 0 1 1 0 1 0 0 0 0 0 0 0 0 0 0
1 0 1 0 1 0 1 0 1 1 0 1 1 0 0 1 0 0 0 1 1 0 1 0 0 0 0 0 0 0 0 0
1 0 0 1 0 1 0 1 0 1 1 0 1 1 0 0 1 0 0 0 1 1 0 1 0 0 0 0 0 0 0 0
1 0 0 0 1 0 1 0 1 0 1 1 0 1 1 0 0 1 0 0 0 1 1 0 1 0 0 0 0 0 0 0
1 0 0 0 0 1 0 1 0 1 0 1 1 0 1 1 0 0 1 0 0 0 1 1 0 1 0 0 0 0 0 0
1 1 1 1 0 0 1 0 0 0 1 0 1 0 1 1 1 1 0 1 1 0 1 0 0 1 1 0 0 0 0 0
1 0 1 1 1 0 0 1 0 0 0 1 0 1 0 1 1 1 1 0 1 1 0 1 0 0 1 1 0 0 0 0
1 0 0 1 1 1 0 0 1 0 0 0 1 0 1 0 1 1 1 1 0 1 1 0 1 0 0 1 1 0 0 0
1 0 0 0 1 1 1 0 0 1 0 0 0 1 0 1 0 1 1 1 1 0 1 1 0 1 0 0 1 1 0 0
1 0 0 0 0 1 1 1 0 0 1 0 0 0 1 0 1 0 1 1 1 1 0 1 1 0 1 0 0 1 1 0
1 0 0 0 0 0 1 1 1 0 0 1 0 0 0 1 0 1 0 1 1 1 1 0 1 1 0 1 0 0 1 1
其对应的BCH码的生成矩阵的形式可以为以上任一矩阵的2-32行,2-32列组成的子矩阵。
(5)64×64的eBCH码的生成矩阵的形式可以为:
1000000000000000000000000000000000000000000000000000000000000000
1100000000000000000000000000000000000000000000000000000000000000
1010000000000000000000000000000000000000000000000000000000000000
1001000000000000000000000000000000000000000000000000000000000000
1000100000000000000000000000000000000000000000000000000000000000
1000010000000000000000000000000000000000000000000000000000000000
1000001000000000000000000000000000000000000000000000000000000000
1110000100000000000000000000000000000000000000000000000000000000
1011000010000000000000000000000000000000000000000000000000000000
1001100001000000000000000000000000000000000000000000000000000000
1000110000100000000000000000000000000000000000000000000000000000
1000011000010000000000000000000000000000000000000000000000000000
1000001100001000000000000000000000000000000000000000000000000000
1100111001010100000000000000000000000000000000000000000000000000
1010011100101010000000000000000000000000000000000000000000000000
1001001110010101000000000000000000000000000000000000000000000000
1000100111001010100000000000000000000000000000000000000000000000
1000010011100101010000000000000000000000000000000000000000000000
1000001001110010101000000000000000000000000000000000000000000000
1111100110100000111100000000000000000000000000000000000000000000
1011110011010000011110000000000000000000000000000000000000000000
1001111001101000001111000000000000000000000000000000000000000000
1000111100110100000111100000000000000000000000000000000000000000
1000011110011010000011110000000000000000000000000000000000000000
1000001111001101000001111000000000000000000000000000000000000000
1111011101110010011011011100000000000000000000000000000000000000
1011101110111001001101101110000000000000000000000000000000000000
1001110111011100100110110111000000000000000000000000000000000000
1110010001000000101110110000100000000000000000000000000000000000
1011001000100000010111011000010000000000000000000000000000000000
1001100100010000001011101100001000000000000000000000000000000000
1000110010001000000101110110000100000000000000000000000000000000
1000011001000100000010111011000010000000000000000000000000000000
1000001100100010000001011101100001000000000000000000000000000000
1111001101101011100001011001111101100000000000000000000000000000
1011100110110101110000101100111110110000000000000000000000000000
1001110011011010111000010110011111011000000000000000000000000000
1000111001101101011100001011001111101100000000000000000000000000
1000011100110110101110000101100111110110000000000000000000000000
1000001110011011010111000010110011111011000000000000000000000000
1100001001001000001000011010110010110111100000000000000000000000
1010000100100100000100001101011001011011110000000000000000000000
1001000010010010000010000110101100101101111000000000000000000000
1000100001001001000001000011010110010110111100000000000000000000
1000010000100100100000100001101011001011011110000000000000000000
1000001000010010010000010000110101100101101111000000000000000000
1101010111100101110010100101011010000110011110100000000000000000
1010101011110010111001010010101101000011001111010000000000000000
1110101001101110010111011110100001100100110110011000000000000000
1011010100110111001011101111010000110010011011001100000000000000
1001101010011011100101110111101000011001001101100110000000000000
1000110101001101110010111011110100001100100110110011000000000000
1000011010100110111001011101111010000110010011011001100000000000
1000001101010011011100101110111101000011001001101100110000000000
1101101100000101010111010101101000110010010011010111001000000000
1010110110000010101011101010110100011001001001101011100100000000
1001011011000001010101110101011010001100100100110101110010000000
1111110111100111010110000101110001101101001000100110010101000000
1011111011110011101011000010111000110110100100010011001010100000
1001111101111001110101100001011100011011010010001001100101010000
1000111110111100111010110000101110001101101001000100110010101000
1000011111011110011101011000010111000110110100100010011001010100
1000001111101111001110101100001011100011011010010001001100101010
1111111111111111111111111111111111111111111111111111111111111111
1000000000000000000000000000000000000000000000000000000000000000
1100000000000000000000000000000000000000000000000000000000000000
1010000000000000000000000000000000000000000000000000000000000000
1001000000000000000000000000000000000000000000000000000000000000
1000100000000000000000000000000000000000000000000000000000000000
1000010000000000000000000000000000000000000000000000000000000000
1000001000000000000000000000000000000000000000000000000000000000
1110000100000000000000000000000000000000000000000000000000000000
1011000010000000000000000000000000000000000000000000000000000000
1001100001000000000000000000000000000000000000000000000000000000
1000110000100000000000000000000000000000000000000000000000000000
1000011000010000000000000000000000000000000000000000000000000000
1000001100001000000000000000000000000000000000000000000000000000
1100111001010100000000000000000000000000000000000000000000000000
1010011100101010000000000000000000000000000000000000000000000000
1001001110010101000000000000000000000000000000000000000000000000
1000100111001010100000000000000000000000000000000000000000000000
1000010011100101010000000000000000000000000000000000000000000000
1000001001110010101000000000000000000000000000000000000000000000
1111100110100000111100000000000000000000000000000000000000000000
1011110011010000011110000000000000000000000000000000000000000000
1001111001101000001111000000000000000000000000000000000000000000
1000111100110100000111100000000000000000000000000000000000000000
1000011110011010000011110000000000000000000000000000000000000000
1000001111001101000001111000000000000000000000000000000000000000
1111011101110010011011011100000000000000000000000000000000000000
1011101110111001001101101110000000000000000000000000000000000000
1001110111011100100110110111000000000000000000000000000000000000
1110010001000000101110110000100000000000000000000000000000000000
1011001000100000010111011000010000000000000000000000000000000000
1001100100010000001011101100001000000000000000000000000000000000
1000110010001000000101110110000100000000000000000000000000000000
1000011001000100000010111011000010000000000000000000000000000000
1000001100100010000001011101100001000000000000000000000000000000
1111001101101011100001011001111101100000000000000000000000000000
1011100110110101110000101100111110110000000000000000000000000000
1001110011011010111000010110011111011000000000000000000000000000
1000111001101101011100001011001111101100000000000000000000000000
1000011100110110101110000101100111110110000000000000000000000000
1000001110011011010111000010110011111011000000000000000000000000
1100001001001000001000011010110010110111100000000000000000000000
1010000100100100000100001101011001011011110000000000000000000000
1001000010010010000010000110101100101101111000000000000000000000
1000100001001001000001000011010110010110111100000000000000000000
1000010000100100100000100001101011001011011110000000000000000000
1000001000010010010000010000110101100101101111000000000000000000
1101010111100101110010100101011010000110011110100000000000000000
1010101011110010111001010010101101000011001111010000000000000000
1110101001101110010111011110100001100100110110011000000000000000
1011010100110111001011101111010000110010011011001100000000000000
1001101010011011100101110111101000011001001101100110000000000000
1000110101001101110010111011110100001100100110110011000000000000
1000011010100110111001011101111010000110010011011001100000000000
1000001101010011011100101110111101000011001001101100110000000000
1101101100000101010111010101101000110010010011010111001000000000
1010110110000010101011101010110100011001001001101011100100000000
1001011011000001010101110101011010001100100100110101110010000000
1111110111100111010110000101110001101101001000100110010101000000
1011111011110011101011000010111000110110100100010011001010100000
1001111101111001110101100001011100011011010010001001100101010000
1000111110111100111010110000101110001101101001000100110010101000
1000011111011110011101011000010111000110110100100010011001010100
1000001111101111001110101100001011100011011010010001001100101010
1000000111110111100111010110000101110001101101001000100110010101
其对应的BCH码的生成矩阵的形式可以为以上任一矩阵的2-64行,2-64列组成的子矩阵。
(6)128×128的eBCH码的生成矩阵的形式可以为:
10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
11000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
11001000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10100100010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10010010001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10001001000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10000100100010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10000010010001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10000001001000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
11110111011000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10111011101100001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10011101110110000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10001110111011000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10000111011101100001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10000011101110110000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10000001110111011000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
11100011110011011011001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10110001111001101101100100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10011000111100110110110010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10001100011110011011011001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10000110001111001101101100100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10000011000111100110110110010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10000001100011110011011011001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
11001110101100100001110010011100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10100111010110010000111001001110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10010011101011001000011100100111000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10001001110101100100001110010011100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10000100111010110010000111001001110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10000010011101011001000011100100111000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10000001001110101100100001110010011100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
11110101100100100000001101110010100110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10111010110010010000000110111001010011000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10011101011001001000000011011100101001100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10001110101100100100000001101110010100110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10000111010110010010000000110111001010011000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10000011101011001001000000011011100101001100000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10000001110101100100100000001101110010100110000000000000000000000000000000000000000000000000000000000000000000000000000000000000
11101110100100101100111110010010001110001101000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10110111010010010110011111001001000111000110100000000000000000000000000000000000000000000000000000000000000000000000000000000000
10011011101001001011001111100100100011100011010000000000000000000000000000000000000000000000000000000000000000000000000000000000
10001101110100100101100111110010010001110001101000000000000000000000000000000000000000000000000000000000000000000000000000000000
10000110111010010010110011111001001000111000110100000000000000000000000000000000000000000000000000000000000000000000000000000000
10000011011101001001011001111100100100011100011010000000000000000000000000000000000000000000000000000000000000000000000000000000
10000001101110100100101100111110010010001110001101000000000000000000000000000000000000000000000000000000000000000000000000000000
11011001000001101000110111000100000000001100100110100000000000000000000000000000000000000000000000000000000000000000000000000000
10101100100000110100011011100010000000000110010011010000000000000000000000000000000000000000000000000000000000000000000000000000
10010110010000011010001101110001000000000011001001101000000000000000000000000000000000000000000000000000000000000000000000000000
10001011001000001101000110111000100000000001100100110100000000000000000000000000000000000000000000000000000000000000000000000000
10000101100100000110100011011100010000000000110010011010000000000000000000000000000000000000000000000000000000000000000000000000
10000010110010000011010001101110001000000000011001001101000000000000000000000000000000000000000000000000000000000000000000000000
10000001011001000001101000110111000100000000001100100110100000000000000000000000000000000000000000000000000000000000000000000000
11101011111110101001101010101101001110001000001011010100110000000000000000000000000000000000000000000000000000000000000000000000
10110101111111010100110101010110100111000100000101101010011000000000000000000000000000000000000000000000000000000000000000000000
10011010111111101010011010101011010011100010000010110101001100000000000000000000000000000000000000000000000000000000000000000000
10001101011111110101001101010101101001110001000001011010100110000000000000000000000000000000000000000000000000000000000000000000
10000110101111111010100110101010110100111000100000101101010011000000000000000000000000000000000000000000000000000000000000000000
10000011010111111101010011010101011010011100010000010110101001100000000000000000000000000000000000000000000000000000000000000000
10000001101011111110101001101010101101001110001000001011010100110000000000000000000000000000000000000000000000000000000000000000
11010010000000001001101111110001111011010100000011101010110000101000000000000000000000000000000000000000000000000000000000000000
10101001000000000100110111111000111101101010000001110101011000010100000000000000000000000000000000000000000000000000000000000000
10010100100000000010011011111100011110110101000000111010101100001010000000000000000000000000000000000000000000000000000000000000
10001010010000000001001101111110001111011010100000011101010110000101000000000000000000000000000000000000000000000000000000000000
10000101001000000000100110111111000111101101010000001110101011000010100000000000000000000000000000000000000000000000000000000000
10000010100100000000010011011111100011110110101000000111010101100001010000000000000000000000000000000000000000000000000000000000
10000001010010000000001001101111110001111011010100000011101010110000101000000000000000000000000000000000000000000000000000000000
11000101111111001011101010001010001111010001010101010101010110101011101100000000000000000000000000000000000000000000000000000000
10100010111111100101110101000101000111101000101010101010101011010101110110000000000000000000000000000000000000000000000000000000
10010001011111110010111010100010100011110100010101010101010101101010111011000000000000000000000000000000000000000000000000000000
10001000101111111001011101010001010001111010001010101010101010110101011101100000000000000000000000000000000000000000000000000000
10000100010111111100101110101000101000111101000101010101010101011010101110110000000000000000000000000000000000000000000000000000
10000010001011111110010111010100010100011110100010101010101010101101010111011000000000000000000000000000000000000000000000000000
10000001000101111111001011101010001010001111010001010101010101010110101011101100000000000000000000000000000000000000000000000000
11000100011000001011000100010101000000011001101100101010101001010110010010011010000000000000000000000000000000000000000000000000
10100010001100000101100010001010100000001100110110010101010100101011001001001101000000000000000000000000000000000000000000000000
10010001000110000010110001000101010000000110011011001010101010010101100100100110100000000000000000000000000000000000000000000000
10001000100011000001011000100010101000000011001101100101010101001010110010010011010000000000000000000000000000000000000000000000
10000100010001100000101100010001010100000001100110110010101010100101011001001001101000000000000000000000000000000000000000000000
10000010001000110000010110001000101010000000110011011001010101010010101100100100110100000000000000000000000000000000000000000000
10000001000100011000001011000100010101000000011001101100101010101001010110010010011010000000000000000000000000000000000000000000
11100011100011111010000100101000101011110100101001010111101000100101111111000101111111000000000000000000000000000000000000000000
10110001110001111101000010010100010101111010010100101011110100010010111111100010111111100000000000000000000000000000000000000000
10011000111000111110100001001010001010111101001010010101111010001001011111110001011111110000000000000000000000000000000000000000
10001100011100011111010000100101000101011110100101001010111101000100101111111000101111111000000000000000000000000000000000000000
10000110001110001111101000010010100010101111010010100101011110100010010111111100010111111100000000000000000000000000000000000000
10000011000111000111110100001001010001010111101001010010101111010001001011111110001011111110000000000000000000000000000000000000
10000001100011100011111010000100101000101011110100101001010111101000100101111111000101111111000000000000000000000000000000000000
11011101111000101110011111010010111110010010001011110000100101010110110110011110000110011001100000000000000000000000000000000000
10101110111100010111001111101001011111001001000101111000010010101011011011001111000011001100110000000000000000000000000000000000
10010111011110001011100111110100101111100100100010111100001001010101101101100111100001100110011000000000000000000000000000000000
10001011101111000101110011111010010111110010010001011110000100101010110110110011110000110011001100000000000000000000000000000000
10000101110111100010111001111101001011111001001000101111000010010101011011011001111000011001100110000000000000000000000000000000
10000010111011110001011100111110100101111100100100010111100001001010101101101100111100001100110011000000000000000000000000000000
10000001011101111000101110011111010010111110010010001011110000100101010110110110011110000110011001100000000000000000000000000000
11011011000111111001000011000001101011110110111100000110001110111110111101000110010011001001100000010000000000000000000000000000
10101101100011111100100001100000110101111011011110000011000111011111011110100011001001100100110000001000000000000000000000000000
10010110110001111110010000110000011010111101101111000001100011101111101111010001100100110010011000000100000000000000000000000000
10001011011000111111001000011000001101011110110111100000110001110111110111101000110010011001001100000010000000000000000000000000
10000101101100011111100100001100000110101111011011110000011000111011111011110100011001001100100110000001000000000000000000000000
10000010110110001111110010000110000011010111101101111000001100011101111101111010001100100110010011000000100000000000000000000000
10000001011011000111111001000011000001101011110110111100000110001110111110111101000110010011001001100000010000000000000000000000
11100010001110010111111100110110100111010010011011100010100101010100101110010000010001110000111111101100101000000000000000000000
10110001000111001011111110011011010011101001001101110001010010101010010111001000001000111000011111110110010100000000000000000000
10011000100011100101111111001101101001110100100110111000101001010101001011100100000100011100001111111011001010000000000000000000
10001100010001110010111111100110110100111010010011011100010100101010100101110010000010001110000111111101100101000000000000000000
10000110001000111001011111110011011010011101001001101110001010010101010010111001000001000111000011111110110010100000000000000000
10000011000100011100101111111001101101001110100100110111000101001010101001011100100000100011100001111111011001010000000000000000
10000001100010001110010111111100110110100111010010011011100010100101010100101110010000010001110000111111101100101000000000000000
11101011100010000111111000100100111111101000001100101010001111110011011010010000111010010010100010001111010000100100000000000000
10110101110001000011111100010010011111110100000110010101000111111001101101001000011101001001010001000111101000010010000000000000
10011010111000100001111110001001001111111010000011001010100011111100110110100100001110100100101000100011110100001001000000000000
10001101011100010000111111000100100111111101000001100101010001111110011011010010000111010010010100010001111010000100100000000000
10000110101110001000011111100010010011111110100000110010101000111111001101101001000011101001001010001000111101000010010000000000
10000011010111000100001111110001001001111111010000011001010100011111100110110100100001110100100101000100011110100001001000000000
10000001101011100010000111111000100100111111101000001100101010001111110011011010010000111010010010100010001111010000100100000000
11111000100001101001101101111110111011001110100010100100111110011001010110001100001001011110101010000010110101110010001110000000
10111100010000110100110110111111011101100111010001010010011111001100101011000110000100101111010101000001011010111001000111000000
10011110001000011010011011011111101110110011101000101001001111100110010101100011000010010111101010100000101101011100100011100000
10001111000100001101001101101111110111011001110100010100100111110011001010110001100001001011110101010000010110101110010001110000
10000111100010000110100110110111111011101100111010001010010011111001100101011000110000100101111010101000001011010111001000111000
10000011110001000011010011011011111101110110011101000101001001111100110010101100011000010010111101010100000101101011100100011100
10000001111000100001101001101101111110111011001110100010100100111110011001010110001100001001011110101010000010110101110010001110
11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
11000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
11001000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10100100010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10010010001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10001001000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10000100100010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10000010010001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10000001001000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
11110111011000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10111011101100001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10011101110110000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10001110111011000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10000111011101100001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10000011101110110000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10000001110111011000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
11100011110011011011001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10110001111001101101100100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10011000111100110110110010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10001100011110011011011001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10000110001111001101101100100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10000011000111100110110110010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10000001100011110011011011001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
11001110101100100001110010011100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10100111010110010000111001001110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10010011101011001000011100100111000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10001001110101100100001110010011100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10000100111010110010000111001001110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10000010011101011001000011100100111000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10000001001110101100100001110010011100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
11110101100100100000001101110010100110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10111010110010010000000110111001010011000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10011101011001001000000011011100101001100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10001110101100100100000001101110010100110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10000111010110010010000000110111001010011000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10000011101011001001000000011011100101001100000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10000001110101100100100000001101110010100110000000000000000000000000000000000000000000000000000000000000000000000000000000000000
11101110100100101100111110010010001110001101000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10110111010010010110011111001001000111000110100000000000000000000000000000000000000000000000000000000000000000000000000000000000
10011011101001001011001111100100100011100011010000000000000000000000000000000000000000000000000000000000000000000000000000000000
10001101110100100101100111110010010001110001101000000000000000000000000000000000000000000000000000000000000000000000000000000000
10000110111010010010110011111001001000111000110100000000000000000000000000000000000000000000000000000000000000000000000000000000
10000011011101001001011001111100100100011100011010000000000000000000000000000000000000000000000000000000000000000000000000000000
10000001101110100100101100111110010010001110001101000000000000000000000000000000000000000000000000000000000000000000000000000000
11011001000001101000110111000100000000001100100110100000000000000000000000000000000000000000000000000000000000000000000000000000
10101100100000110100011011100010000000000110010011010000000000000000000000000000000000000000000000000000000000000000000000000000
10010110010000011010001101110001000000000011001001101000000000000000000000000000000000000000000000000000000000000000000000000000
10001011001000001101000110111000100000000001100100110100000000000000000000000000000000000000000000000000000000000000000000000000
10000101100100000110100011011100010000000000110010011010000000000000000000000000000000000000000000000000000000000000000000000000
10000010110010000011010001101110001000000000011001001101000000000000000000000000000000000000000000000000000000000000000000000000
10000001011001000001101000110111000100000000001100100110100000000000000000000000000000000000000000000000000000000000000000000000
11101011111110101001101010101101001110001000001011010100110000000000000000000000000000000000000000000000000000000000000000000000
10110101111111010100110101010110100111000100000101101010011000000000000000000000000000000000000000000000000000000000000000000000
10011010111111101010011010101011010011100010000010110101001100000000000000000000000000000000000000000000000000000000000000000000
10001101011111110101001101010101101001110001000001011010100110000000000000000000000000000000000000000000000000000000000000000000
10000110101111111010100110101010110100111000100000101101010011000000000000000000000000000000000000000000000000000000000000000000
10000011010111111101010011010101011010011100010000010110101001100000000000000000000000000000000000000000000000000000000000000000
10000001101011111110101001101010101101001110001000001011010100110000000000000000000000000000000000000000000000000000000000000000
11010010000000001001101111110001111011010100000011101010110000101000000000000000000000000000000000000000000000000000000000000000
10101001000000000100110111111000111101101010000001110101011000010100000000000000000000000000000000000000000000000000000000000000
10010100100000000010011011111100011110110101000000111010101100001010000000000000000000000000000000000000000000000000000000000000
10001010010000000001001101111110001111011010100000011101010110000101000000000000000000000000000000000000000000000000000000000000
10000101001000000000100110111111000111101101010000001110101011000010100000000000000000000000000000000000000000000000000000000000
10000010100100000000010011011111100011110110101000000111010101100001010000000000000000000000000000000000000000000000000000000000
10000001010010000000001001101111110001111011010100000011101010110000101000000000000000000000000000000000000000000000000000000000
11000101111111001011101010001010001111010001010101010101010110101011101100000000000000000000000000000000000000000000000000000000
10100010111111100101110101000101000111101000101010101010101011010101110110000000000000000000000000000000000000000000000000000000
10010001011111110010111010100010100011110100010101010101010101101010111011000000000000000000000000000000000000000000000000000000
10001000101111111001011101010001010001111010001010101010101010110101011101100000000000000000000000000000000000000000000000000000
10000100010111111100101110101000101000111101000101010101010101011010101110110000000000000000000000000000000000000000000000000000
10000010001011111110010111010100010100011110100010101010101010101101010111011000000000000000000000000000000000000000000000000000
10000001000101111111001011101010001010001111010001010101010101010110101011101100000000000000000000000000000000000000000000000000
11000100011000001011000100010101000000011001101100101010101001010110010010011010000000000000000000000000000000000000000000000000
10100010001100000101100010001010100000001100110110010101010100101011001001001101000000000000000000000000000000000000000000000000
10010001000110000010110001000101010000000110011011001010101010010101100100100110100000000000000000000000000000000000000000000000
10001000100011000001011000100010101000000011001101100101010101001010110010010011010000000000000000000000000000000000000000000000
10000100010001100000101100010001010100000001100110110010101010100101011001001001101000000000000000000000000000000000000000000000
10000010001000110000010110001000101010000000110011011001010101010010101100100100110100000000000000000000000000000000000000000000
10000001000100011000001011000100010101000000011001101100101010101001010110010010011010000000000000000000000000000000000000000000
11100011100011111010000100101000101011110100101001010111101000100101111111000101111111000000000000000000000000000000000000000000
10110001110001111101000010010100010101111010010100101011110100010010111111100010111111100000000000000000000000000000000000000000
10011000111000111110100001001010001010111101001010010101111010001001011111110001011111110000000000000000000000000000000000000000
10001100011100011111010000100101000101011110100101001010111101000100101111111000101111111000000000000000000000000000000000000000
10000110001110001111101000010010100010101111010010100101011110100010010111111100010111111100000000000000000000000000000000000000
10000011000111000111110100001001010001010111101001010010101111010001001011111110001011111110000000000000000000000000000000000000
10000001100011100011111010000100101000101011110100101001010111101000100101111111000101111111000000000000000000000000000000000000
11011101111000101110011111010010111110010010001011110000100101010110110110011110000110011001100000000000000000000000000000000000
10101110111100010111001111101001011111001001000101111000010010101011011011001111000011001100110000000000000000000000000000000000
10010111011110001011100111110100101111100100100010111100001001010101101101100111100001100110011000000000000000000000000000000000
10001011101111000101110011111010010111110010010001011110000100101010110110110011110000110011001100000000000000000000000000000000
10000101110111100010111001111101001011111001001000101111000010010101011011011001111000011001100110000000000000000000000000000000
10000010111011110001011100111110100101111100100100010111100001001010101101101100111100001100110011000000000000000000000000000000
10000001011101111000101110011111010010111110010010001011110000100101010110110110011110000110011001100000000000000000000000000000
11011011000111111001000011000001101011110110111100000110001110111110111101000110010011001001100000010000000000000000000000000000
10101101100011111100100001100000110101111011011110000011000111011111011110100011001001100100110000001000000000000000000000000000
10010110110001111110010000110000011010111101101111000001100011101111101111010001100100110010011000000100000000000000000000000000
10001011011000111111001000011000001101011110110111100000110001110111110111101000110010011001001100000010000000000000000000000000
10000101101100011111100100001100000110101111011011110000011000111011111011110100011001001100100110000001000000000000000000000000
10000010110110001111110010000110000011010111101101111000001100011101111101111010001100100110010011000000100000000000000000000000
10000001011011000111111001000011000001101011110110111100000110001110111110111101000110010011001001100000010000000000000000000000
11100010001110010111111100110110100111010010011011100010100101010100101110010000010001110000111111101100101000000000000000000000
10110001000111001011111110011011010011101001001101110001010010101010010111001000001000111000011111110110010100000000000000000000
10011000100011100101111111001101101001110100100110111000101001010101001011100100000100011100001111111011001010000000000000000000
10001100010001110010111111100110110100111010010011011100010100101010100101110010000010001110000111111101100101000000000000000000
10000110001000111001011111110011011010011101001001101110001010010101010010111001000001000111000011111110110010100000000000000000
10000011000100011100101111111001101101001110100100110111000101001010101001011100100000100011100001111111011001010000000000000000
10000001100010001110010111111100110110100111010010011011100010100101010100101110010000010001110000111111101100101000000000000000
11101011100010000111111000100100111111101000001100101010001111110011011010010000111010010010100010001111010000100100000000000000
10110101110001000011111100010010011111110100000110010101000111111001101101001000011101001001010001000111101000010010000000000000
10011010111000100001111110001001001111111010000011001010100011111100110110100100001110100100101000100011110100001001000000000000
10001101011100010000111111000100100111111101000001100101010001111110011011010010000111010010010100010001111010000100100000000000
10000110101110001000011111100010010011111110100000110010101000111111001101101001000011101001001010001000111101000010010000000000
10000011010111000100001111110001001001111111010000011001010100011111100110110100100001110100100101000100011110100001001000000000
10000001101011100010000111111000100100111111101000001100101010001111110011011010010000111010010010100010001111010000100100000000
11111000100001101001101101111110111011001110100010100100111110011001010110001100001001011110101010000010110101110010001110000000
10111100010000110100110110111111011101100111010001010010011111001100101011000110000100101111010101000001011010111001000111000000
10011110001000011010011011011111101110110011101000101001001111100110010101100011000010010111101010100000101101011100100011100000
10001111000100001101001101101111110111011001110100010100100111110011001010110001100001001011110101010000010110101110010001110000
10000111100010000110100110110111111011101100111010001010010011111001100101011000110000100101111010101000001011010111001000111000
10000011110001000011010011011011111101110110011101000101001001111100110010101100011000010010111101010100000101101011100100011100
10000001111000100001101001101101111110111011001110100010100100111110011001010110001100001001011110101010000010110101110010001110
10000000111100010000110100110110111111011101100111010001010010011111001100101011000110000100101111010101000001011010111001000111
其对应的BCH码的生成矩阵的形式可以为以上任一矩阵的2-128行,2-128列组成的子矩阵。
(7)256×256的eBCH码的生成矩阵的形式可以为:
1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1101110001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1010111000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1001011100010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1000101110001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1000010111000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1000001011100010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1000000101110001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1000000010111000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1110001101111011010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1011000110111101101000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1001100011011110110100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1000110001101111011010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1000011000110111101101000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1000001100011011110110100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1000000110001101111011010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1000000011000110111101101000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1101011011000010111011101100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1010101101100001011101110110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1001010110110000101110111011000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1000101011011000010111011101100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1000010101101100001011101110110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1000001010110110000101110111011000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1000000101011011000010111011101100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1000000010101101100001011101110110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1101111110100001011011010011101111000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1010111111010000101101101001110111100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1001011111101000010110110100111011110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1000101111110100001011011010011101111000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1000010111111010000101101101001110111100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1000001011111101000010110110100111011110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1000000101111110100001011011010011101111000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1000000010111111010000101101101001110111100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1100010001011010111001011101111101100110010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1010001000101101011100101110111110110011001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1001000100010110101110010111011111011001100100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1000100010001011010111001011101111101100110010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1000010001000101101011100101110111110110011001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1000001000100010110101110010111011111011001100100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1000000100010001011010111001011101111101100110010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1000000010001000101101011100101110111110110011001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1111010010011110011111011101000011101011111100011100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1011101001001111001111101110100001110101111110001110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1001110100100111100111110111010000111010111111000111000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1000111010010011110011111011101000011101011111100011100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1000011101001001111001111101110100001110101111110001110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1000001110100100111100111110111010000111010111111000111000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1000000111010010011110011111011101000011101011111100011100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1000000011101001001111001111101110100001110101111110001110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1100001110010010111000010001000111010100110000110110011111000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1010000111001001011100001000100011101010011000011011001111100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1001000011100100101110000100010001110101001100001101100111110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1000100001110010010111000010001000111010100110000110110011111000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1000010000111001001011100001000100011101010011000011011001111100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1000001000011100100101110000100010001110101001100001101100111110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1000000100001110010010111000010001000111010100110000110110011111000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1000000010000111001001011100001000100011101010011000011011001111100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1111011101001100111110110110101100100011111100000111001110011011010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1011101110100110011111011011010110010001111110000011100111001101101000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1001110111010011001111101101101011001000111111000001110011100110110100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1000111011101001100111110110110101100100011111100000111001110011011010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1100101110011110010010010110100000000000001101110100110101101111010101000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1010010111001111001001001011010000000000000110111010011010110111101010100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1001001011100111100100100101101000000000000011011101001101011011110101010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1000100101110011110010010010110100000000000001101110100110101101111010101000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1000010010111001111001001001011010000000000000110111010011010110111101010100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1000001001011100111100100100101101000000000000011011101001101011011110101010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1000000100101110011110010010010110100000000000001101110100110101101111010101000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1000000010010111001111001001001011010000000000000110111010011010110111101010100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1101101001000000110011100001010110001000001110111100111000100111001010011010010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1010110100100000011001110000101011000100000111011110011100010011100101001101001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1001011010010000001100111000010101100010000011101111001110001001110010100110100100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1000101101001000000110011100001010110001000001110111100111000100111001010011010010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1000010110100100000011001110000101011000100000111011110011100010011100101001101001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1000001011010010000001100111000010101100010000011101111001110001001110010100110100100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1000000101101001000000110011100001010110001000001110111100111000100111001010011010010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1000000010110100100000011001110000101011000100000111011110011100010011100101001101001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1111110011000110011100011000111111000011101110010001110010100010001100010011100001101100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1011111001100011001110001100011111100001110111001000111001010001000110001001110000110110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1001111100110001100111000110001111110000111011100100011100101000100011000100111000011011000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1000111110011000110011100011000111111000011101110010001110010100010001100010011100001101100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1000011111001100011001110001100011111100001110111001000111001010001000110001001110000110110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1000001111100110001100111000110001111110000111011100100011100101000100011000100111000011011000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1000000111110011000110011100011000111111000011101110010001110010100010001100010011100001101100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1000000011111001100011001110001100011111100001110111001000111001010001000110001001110000110110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1100000011001100101001010111001111101100101101010000011101111000000100101101100001000000101111000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1010000001100110010100101011100111110110010110101000001110111100000010010110110000100000010111100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1001000000110011001010010101110011111011001011010100000111011110000001001011011000010000001011110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1000100000011001100101001010111001111101100101101010000011101111000000100101101100001000000101111000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1000010000001100110010100101011100111110110010110101000001110111100000010010110110000100000010111100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1000001000000110011001010010101110011111011001011010100000111011110000001001011011000010000001011110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1000000100000011001100101001010111001111101100101101010000011101111000000100101101100001000000101111000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1000000010000001100110010100101011100111110110010110101000001110111100000010010110110000100000010111100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1110110011111111011001011001011000101010010111101100000101011011111000001101000000110100101111101111110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1011011001111111101100101100101100010101001011110110000010101101111100000110100000011010010111110111111000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1001101100111111110110010110010110001010100101111011000001010110111110000011010000001101001011111011111100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1000110110011111111011001011001011000101010010111101100000101011011111000001101000000110100101111101111110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1000011011001111111101100101100101100010101001011110110000010101101111100000110100000011010010111110111111000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1000001101100111111110110010110010110001010100101111011000001010110111110000011010000001101001011111011111100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1000000110110011111111011001011001011000101010010111101100000101011011111000001101000000110100101111101111110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1000000011011001111111101100101100101100010101001011110110000010101101111100000110100000011010010111110111111000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1100100111100100000100001001101000110101011100001000110101010101101011100111110101110111100000110100010001011100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1010010011110010000010000100110100011010101110000100011010101010110101110011111010111011110000011010001000101110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1001001001111001000001000010011010001101010111000010001101010101011010111001111101011101111000001101000100010111000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1000100100111100100000100001001101000110101011100001000110101010101101011100111110101110111100000110100010001011100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1000010010011110010000010000100110100011010101110000100011010101010110101110011111010111011110000011010001000101110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1000001001001111001000001000010011010001101010111000010001101010101011010111001111101011101111000001101000100010111000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1000000100100111100100000100001001101000110101011100001000110101010101101011100111110101110111100000110100010001011100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1000000010010011110010000010000100110100011010101110000100011010101010110101110011111010111011110000011010001000101110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1101001001111011101110101001111001010000110111010010111000111101100011101101111100000011000010110111100000001100011001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1010100100111101110111010100111100101000011011101001011100011110110001110110111110000001100001011011110000000110001100100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1001010010011110111011101010011110010100001101110100101110001111011000111011011111000000110000101101111000000011000110010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1000101001001111011101110101001111001010000110111010010111000111101100011101101111100000011000010110111100000001100011001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1000010100100111101110111010100111100101000011011101001011100011110110001110110111110000001100001011011110000000110001100100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1000001010010011110111011101010011110010100001101110100101110001111011000111011011111000000110000101101111000000011000110010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1000000101001001111011101110101001111001010000110111010010111000111101100011101101111100000011000010110111100000001100011001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1000000010100100111101110111010100111100101000011011101001011100011110110001110110111110000001100001011011110000000110001100100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1100111001101011100001010000010001100010001001111111010000101010100011010100101100000100101100111001100110110110100111101100010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1010011100110101110000101000001000110001000100111111101000010101010001101010010110000010010110011100110011011011010011110110001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1001001110011010111000010100000100011000100010011111110100001010101000110101001011000001001011001110011001101101101001111011000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1000100111001101011100001010000010001100010001001111111010000101010100011010100101100000100101100111001100110110110100111101100010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1000010011100110101110000101000001000110001000100111111101000010101010001101010010110000010010110011100110011011011010011110110001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1000001001110011010111000010100000100011000100010011111110100001010101000110101001011000001001011001110011001101101101001111011000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1000000100111001101011100001010000010001100010001001111111010000101010100011010100101100000100101100111001100110110110100111101100010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1000000010011100110101110000101000001000110001000100111111101000010101010001101010010110000010010110011100110011011011010011110110001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1111011010011000101010111010011010010100001100011100101011010110000100010111100111110000000011011000010001010010101000001100011000010100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1011101101001100010101011101001101001010000110001110010101101011000010001011110011111000000001101100001000101001010100000110001100001010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1001110110100110001010101110100110100101000011000111001010110101100001000101111001111100000000110110000100010100101010000011000110000101000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1000111011010011000101010111010011010010100001100011100101011010110000100010111100111110000000011011000010001010010101000001100011000010100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1000011101101001100010101011101001101001010000110001110010101101011000010001011110011111000000001101100001000101001010100000110001100001010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1000001110110100110001010101110100110100101000011000111001010110101100001000101111001111100000000110110000100010100101010000011000110000101000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1000000111011010011000101010111010011010010100001100011100101011010110000100010111100111110000000011011000010001010010101000001100011000010100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1000000011101101001100010101011101001101001010000110001110010101101011000010001011110011111000000001101100001000101001010100000110001100001010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1111110111010111001110100110011101101010101110011111010000000011001000001011110011110011010111001010000000100010111101101011011011010101000011000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1011111011101011100111010011001110110101010111001111101000000001100100000101111001111001101011100101000000010001011110110101101101101010100001100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1001111101110101110011101001100111011010101011100111110100000000110010000010111100111100110101110010100000001000101111011010110110110101010000110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1000111110111010111001110100110011101101010101110011111010000000011001000001011110011110011010111001010000000100010111101101011011011010101000011000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1000011111011101011100111010011001110110101010111001111101000000001100100000101111001111001101011100101000000010001011110110101101101101010100001100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1000001111101110101110011101001100111011010101011100111110100000000110010000010111100111100110101110010100000001000101111011010110110110101010000110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1000000111110111010111001110100110011101101010101110011111010000000011001000001011110011110011010111001010000000100010111101101011011011010101000011000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1000000011111011101011100111010011001110110101010111001111101000000001100100000101111001111001101011100101000000010001011110110101101101101010100001100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1100001001001101100000101111001111101011111100000010001111001110101110010000000110111100001010100110011101010011011000010010110010111111101000010010010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1010000100100110110000010111100111110101111110000001000111100111010111001000000011011110000101010011001110101001101100001001011001011111110100001001001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1001000010010011011000001011110011111010111111000000100011110011101011100100000001101111000010101001100111010100110110000100101100101111111010000100100100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1000100001001001101100000101111001111101011111100000010001111001110101110010000000110111100001010100110011101010011011000010010110010111111101000010010010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1000010000100100110110000010111100111110101111110000001000111100111010111001000000011011110000101010011001110101001101100001001011001011111110100001001001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1000001000010010011011000001011110011111010111111000000100011110011101011100100000001101111000010101001100111010100110110000100101100101111111010000100100100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1000000100001001001101100000101111001111101011111100000010001111001110101110010000000110111100001010100110011101010011011000010010110010111111101000010010010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1000000010000100100110110000010111100111110101111110000001000111100111010111001000000011011110000101010011001110101001101100001001011001011111110100001001001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1100110001110000110010110001011111000100100001010101010010110110001111101100000010011100001100001111010010010001111100110111001110101010111011011011101011000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1010011000111000011001011000101111100010010000101010101001011011000111110110000001001110000110000111101001001000111110011011100111010101011101101101110101100010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1001001100011100001100101100010111110001001000010101010100101101100011111011000000100111000011000011110100100100011111001101110011101010101110110110111010110001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1000100110001110000110010110001011111000100100001010101010010110110001111101100000010011100001100001111010010010001111100110111001110101010111011011011101011000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1000010011000111000011001011000101111100010010000101010101001011011000111110110000001001110000110000111101001001000111110011011100111010101011101101101110101100010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1000001001100011100001100101100010111110001001000010101010100101101100011111011000000100111000011000011110100100100011111001101110011101010101110110110111010110001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1000000100110001110000110010110001011111000100100001010101010010110110001111101100000010011100001100001111010010010001111100110111001110101010111011011011101011000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1000000010011000111000011001011000101111100010010000101010101001011011000111110110000001001110000110000111101001001000111110011011100111010101011101101101110101100010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1100011101001001110001010111000010111010011111000101101101111000100100101010110111001010111100110011110010111010111100001001001111010110000110000101011010000101111011000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1010001110100100111000101011100001011101001111100010110110111100010010010101011011100101011110011001111001011101011110000100100111101011000011000010101101000010111101100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1001000111010010011100010101110000101110100111110001011011011110001001001010101101110010101111001100111100101110101111000010010011110101100001100001010110100001011110110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1000100011101001001110001010111000010111010011111000101101101111000100100101010110111001010111100110011110010111010111100001001001111010110000110000101011010000101111011000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1111100110100010111100100110110111010101001101010010111011000010011001000010111100111000110001110011100110010101110001011110010110001111001100001110011111011110100000100100000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1011110011010001011110010011011011101010100110101001011101100001001100100001011110011100011000111001110011001010111000101111001011000111100110000111001111101111010000010010000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1001111001101000101111001001101101110101010011010100101110110000100110010000101111001110001100011100111001100101011100010111100101100011110011000011100111110111101000001001000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1000111100110100010111100100110110111010101001101010010111011000010011001000010111100111000110001110011100110010101110001011110010110001111001100001110011111011110100000100100000000000000000000000000000000000000000000000000000000000000000000000000000000000
1000011110011010001011110010011011011101010100110101001011101100001001100100001011110011100011000111001110011001010111000101111001011000111100110000111001111101111010000010010000000000000000000000000000000000000000000000000000000000000000000000000000000000
1000001111001101000101111001001101101110101010011010100101110110000100110010000101111001110001100011100111001100101011100010111100101100011110011000011100111110111101000001001000000000000000000000000000000000000000000000000000000000000000000000000000000000
1000000111100110100010111100100110110111010101001101010010111011000010011001000010111100111000110001110011100110010101110001011110010110001111001100001110011111011110100000100100000000000000000000000000000000000000000000000000000000000000000000000000000000
1000000011110011010001011110010011011011101010100110101001011101100001001100100001011110011100011000111001110011001010111000101111001011000111100110000111001111101111010000010010000000000000000000000000000000000000000000000000000000000000000000000000000000
1101101110010001110100001101011011111100100111011010110101100000100010011001111100011011110111000010001001110000111010000010000000000101111101011111110011101110000000000111011011000000000000000000000000000000000000000000000000000000000000000000000000000000
1010110111001000111010000110101101111110010011101101011010110000010001001100111110001101111011100001000100111000011101000001000000000010111110101111111001110111000000000011101101100000000000000000000000000000000000000000000000000000000000000000000000000000
1001011011100100011101000011010110111111001001110110101101011000001000100110011111000110111101110000100010011100001110100000100000000001011111010111111100111011100000000001110110110000000000000000000000000000000000000000000000000000000000000000000000000000
1000101101110010001110100001101011011111100100111011010110101100000100010011001111100011011110111000010001001110000111010000010000000000101111101011111110011101110000000000111011011000000000000000000000000000000000000000000000000000000000000000000000000000
1000010110111001000111010000110101101111110010011101101011010110000010001001100111110001101111011100001000100111000011101000001000000000010111110101111111001110111000000000011101101100000000000000000000000000000000000000000000000000000000000000000000000000
1000001011011100100011101000011010110111111001001110110101101011000001000100110011111000110111101110000100010011100001110100000100000000001011111010111111100111011100000000001110110110000000000000000000000000000000000000000000000000000000000000000000000000
1000000101101110010001110100001101011011111100100111011010110101100000100010011001111100011011110111000010001001110000111010000010000000000101111101011111110011101110000000000111011011000000000000000000000000000000000000000000000000000000000000000000000000
1000000010110111001000111010000110101101111110010011101101011010110000010001001100111110001101111011100001000100111000011101000001000000000010111110101111111001110111000000000011101101100000000000000000000000000000000000000000000000000000000000000000000000
1101110000011000111100010010110001011111101101010011110000101010001001001101000010110011100100110110010100100010111100001101101101100101100010110001001011000010101000100111001010000001010000000000000000000000000000000000000000000000000000000000000000000000
1010111000001100011110001001011000101111110110101001111000010101000100100110100001011001110010011011001010010001011110000110110110110010110001011000100101100001010100010011100101000000101000000000000000000000000000000000000000000000000000000000000000000000
1001011100000110001111000100101100010111111011010100111100001010100010010011010000101100111001001101100101001000101111000011011011011001011000101100010010110000101010001001110010100000010100000000000000000000000000000000000000000000000000000000000000000000
1000101110000011000111100010010110001011111101101010011110000101010001001001101000010110011100100110110010100100010111100001101101101100101100010110001001011000010101000100111001010000001010000000000000000000000000000000000000000000000000000000000000000000
1000010111000001100011110001001011000101111110110101001111000010101000100100110100001011001110010011011001010010001011110000110110110110010110001011000100101100001010100010011100101000000101000000000000000000000000000000000000000000000000000000000000000000
1000001011100000110001111000100101100010111111011010100111100001010100010010011010000101100111001001101100101001000101111000011011011011001011000101100010010110000101010001001110010100000010100000000000000000000000000000000000000000000000000000000000000000
1000000101110000011000111100010010110001011111101101010011110000101010001001001101000010110011100100110110010100100010111100001101101101100101100010110001001011000010101000100111001010000001010000000000000000000000000000000000000000000000000000000000000000
1000000010111000001100011110001001011000101111110110101001111000010101000100100110100001011001110010011011001010010001011110000110110110110010110001011000100101100001010100010011100101000000101000000000000000000000000000000000000000000000000000000000000000
1100000110110001101010000111011101011110100011111011010101101001011010111100100100011011011110000000111000111111101110111100010101100110101010110001001101110011100101101000101111001001101111000100000000000000000000000000000000000000000000000000000000000000
1010000011011000110101000011101110101111010001111101101010110100101101011110010010001101101111000000011100011111110111011110001010110011010101011000100110111001110010110100010111100100110111100010000000000000000000000000000000000000000000000000000000000000
1001000001101100011010100001110111010111101000111110110101011010010110101111001001000110110111100000001110001111111011101111000101011001101010101100010011011100111001011010001011110010011011110001000000000000000000000000000000000000000000000000000000000000
1000100000110110001101010000111011101011110100011111011010101101001011010111100100100011011011110000000111000111111101110111100010101100110101010110001001101110011100101101000101111001001101111000100000000000000000000000000000000000000000000000000000000000
1000010000011011000110101000011101110101111010001111101101010110100101101011110010010001101101111000000011100011111110111011110001010110011010101011000100110111001110010110100010111100100110111100010000000000000000000000000000000000000000000000000000000000
1000001000001101100011010100001110111010111101000111110110101011010010110101111001001000110110111100000001110001111111011101111000101011001101010101100010011011100111001011010001011110010011011110001000000000000000000000000000000000000000000000000000000000
1000000100000110110001101010000111011101011110100011111011010101101001011010111100100100011011011110000000111000111111101110111100010101100110101010110001001101110011100101101000101111001001101111000100000000000000000000000000000000000000000000000000000000
1000000010000011011000110101000011101110101111010001111101101010110100101101011110010010001101101111000000011100011111110111011110001010110011010101011000100110111001110010110100010111100100110111100010000000000000000000000000000000000000000000000000000000
1111100011110111001101110000011010001001001000111101101000100000101101111011010110001100001101010110001101000010110000011000110101111010101100000110110100000000100100000101110000010101010001101100110111000000000000000000000000000000000000000000000000000000
1011110001111011100110111000001101000100100100011110110100010000010110111101101011000110000110101011000110100001011000001100011010111101010110000011011010000000010010000010111000001010101000110110011011100000000000000000000000000000000000000000000000000000
1001111000111101110011011100000110100010010010001111011010001000001011011110110101100011000011010101100011010000101100000110001101011110101011000001101101000000001001000001011100000101010100011011001101110000000000000000000000000000000000000000000000000000
1000111100011110111001101110000011010001001001000111101101000100000101101111011010110001100001101010110001101000010110000011000110101111010101100000110110100000000100100000101110000010101010001101100110111000000000000000000000000000000000000000000000000000
1000011110001111011100110111000001101000100100100011110110100010000010110111101101011000110000110101011000110100001011000001100011010111101010110000011011010000000010010000010111000001010101000110110011011100000000000000000000000000000000000000000000000000
1000001111000111101110011011100000110100010010010001111011010001000001011011110110101100011000011010101100011010000101100000110001101011110101011000001101101000000001001000001011100000101010100011011001101110000000000000000000000000000000000000000000000000
1000000111100011110111001101110000011010001001001000111101101000100000101101111011010110001100001101010110001101000010110000011000110101111010101100000110110100000000100100000101110000010101010001101100110111000000000000000000000000000000000000000000000000
1000000011110001111011100110111000001101000100100100011110110100010000010110111101101011000110000110101011000110100001011000001100011010111101010110000011011010000000010010000010111000001010101000110110011011100000000000000000000000000000000000000000000000
1110111100110001101010101101001010000011011000101000000101001000011001001101001100001110110110010100101111100110110010011000001111111110100001000110110000110011101011001011010011000111100000010001101110110101010000000000000000000000000000000000000000000000
1011011110011000110101010110100101000001101100010100000010100100001100100110100110000111011011001010010111110011011001001100000111111111010000100011011000011001110101100101101001100011110000001000110111011010101000000000000000000000000000000000000000000000
1100001101100101000101010000111101100010000010110110000110111110010011111000111001001010000000111011110011101100000111110010001011111110011001110100000100100110100100011100001110010101101000011101000010000010101100000000000000000000000000000000000000000000
1010000110110010100010101000011110110001000001011011000011011111001001111100011100100101000000011101111001110110000011111001000101111111001100111010000010010011010010001110000111001010110100001110100001000001010110000000000000000000000000000000000000000000
1001000011011001010001010100001111011000100000101101100001101111100100111110001110010010100000001110111100111011000001111100100010111111100110011101000001001001101001000111000011100101011010000111010000100000101011000000000000000000000000000000000000000000
1000100001101100101000101010000111101100010000010110110000110111110010011111000111001001010000000111011110011101100000111110010001011111110011001110100000100100110100100011100001110010101101000011101000010000010101100000000000000000000000000000000000000000
1000010000110110010100010101000011110110001000001011011000011011111001001111100011100100101000000011101111001110110000011111001000101111111001100111010000010010011010010001110000111001010110100001110100001000001010110000000000000000000000000000000000000000
1000001000011011001010001010100001111011000100000101101100001101111100100111110001110010010100000001110111100111011000001111100100010111111100110011101000001001001101001000111000011100101011010000111010000100000101011000000000000000000000000000000000000000
1000000100001101100101000101010000111101100010000010110110000110111110010011111000111001001010000000111011110011101100000111110010001011111110011001110100000100100110100100011100001110010101101000011101000010000010101100000000000000000000000000000000000000
1000000010000110110010100010101000011110110001000001011011000011011111001001111100011100100101000000011101111001110110000011111001000101111111001100111010000010010011010010001110000111001010110100001110100001000001010110000000000000000000000000000000000000
1110000000001001000110000001111110111001101110001001011111001110010110001110010110001111100011000111101110111000010001000110101111110001101001010111001001111111100001100001111000000111011000101101010000110110011110100101000000000000000000000000000000000000
1011000000000100100011000000111111011100110111000100101111100111001011000111001011000111110001100011110111011100001000100011010111111000110100101011100100111111110000110000111100000011101100010110101000011011001111010010100000000000000000000000000000000000
1001100000000010010001100000011111101110011011100010010111110011100101100011100101100011111000110001111011101110000100010001101011111100011010010101110010011111111000011000011110000001110110001011010100001101100111101001010000000000000000000000000000000000
1000110000000001001000110000001111110111001101110001001011111001110010110001110010110001111100011000111101110111000010001000110101111110001101001010111001001111111100001100001111000000111011000101101010000110110011110100101000000000000000000000000000000000
1000011000000000100100011000000111111011100110111000100101111100111001011000111001011000111110001100011110111011100001000100011010111111000110100101011100100111111110000110000111100000011101100010110101000011011001111010010100000000000000000000000000000000
1000001100000000010010001100000011111101110011011100010010111110011100101100011100101100011111000110001111011101110000100010001101011111100011010010101110010011111111000011000011110000001110110001011010100001101100111101001010000000000000000000000000000000
1000000110000000001001000110000001111110111001101110001001011111001110010110001110010110001111100011000111101110111000010001000110101111110001101001010111001001111111100001100001111000000111011000101101010000110110011110100101000000000000000000000000000000
1000000011000000000100100011000000111111011100110111000100101111100111001011000111001011000111110001100011110111011100001000100011010111111000110100101011100100111111110000110000111100000011101100010110101000011011001111010010100000000000000000000000000000
1111110000101011101110000001000100001111101011001101010000011000001100100001111100100000010001010110010001010010001110101100100111111110100011110010100000001011000111010101101011001100111000110111011011110101101100111101010000110000000000000000000000000000
1011111000010101110111000000100010000111110101100110101000001100000110010000111110010000001000101011001000101001000111010110010011111111010001111001010000000101100011101010110101100110011100011011101101111010110110011110101000011000000000000000000000000000
1001111100001010111011100000010001000011111010110011010100000110000011001000011111001000000100010101100100010100100011101011001001111111101000111100101000000010110001110101011010110011001110001101110110111101011011001111010100001100000000000000000000000000
1000111110000101011101110000001000100001111101011001101010000011000001100100001111100100000010001010110010001010010001110101100100111111110100011110010100000001011000111010101101011001100111000110111011011110101101100111101010000110000000000000000000000000
1000011111000010101110111000000100010000111110101100110101000001100000110010000111110010000001000101011001000101001000111010110010011111111010001111001010000000101100011101010110101100110011100011011101101111010110110011110101000011000000000000000000000000
1000001111100001010111011100000010001000011111010110011010100000110000011001000011111001000000100010101100100010100100011101011001001111111101000111100101000000010110001110101011010110011001110001101110110111101011011001111010100001100000000000000000000000
1000000111110000101011101110000001000100001111101011001101010000011000001100100001111100100000010001010110010001010010001110101100100111111110100011110010100000001011000111010101101011001100111000110111011011110101101100111101010000110000000000000000000000
1000000011111000010101110111000000100010000111110101100110101000001100000110010000111110010000001000101011001000101001000111010110010011111111010001111001010000000101100011101010110101100110011100011011101101111010110110011110101000011000000000000000000000
1101010111110111001110100101011011001001100011100010100110101100100010101010001101001111000110101011101000001100001110111010010110000100010100011111000011110101100110111111100000000011101011010110110000011000111101010101100010011101010100000000000000000000
1010101011111011100111010010101101100100110001110001010011010110010001010101000110100111100011010101110100000110000111011101001011000010001010001111100001111010110011011111110000000001110101101011011000001100011110101010110001001110101010000000000000000000
1001010101111101110011101001010110110010011000111000101001101011001000101010100011010011110001101010111010000011000011101110100101100001000101000111110000111101011001101111111000000000111010110101101100000110001111010101011000100111010101000000000000000000
1000101010111110111001110100101011011001001100011100010100110101100100010101010001101001111000110101011101000001100001110111010010110000100010100011111000011110101100110111111100000000011101011010110110000011000111101010101100010011101010100000000000000000
1000010101011111011100111010010101101100100110001110001010011010110010001010101000110100111100011010101110100000110000111011101001011000010001010001111100001111010110011011111110000000001110101101011011000001100011110101010110001001110101010000000000000000
1000001010101111101110011101001010110110010011000111000101001101011001000101010100011010011110001101010111010000011000011101110100101100001000101000111110000111101011001101111111000000000111010110101101100000110001111010101011000100111010101000000000000000
1000000101010111110111001110100101011011001001100011100010100110101100100010101010001101001111000110101011101000001100001110111010010110000100010100011111000011110101100110111111100000000011101011010110110000011000111101010101100010011101010100000000000000
1000000010101011111011100111010010101101100100110001110001010011010110010001010101000110100111100011010101110100000110000111011101001011000010001010001111100001111010110011011111110000000001110101101011011000001100011110101010110001001110101010000000000000
1111001101000000101000011001001110100011010000111101110100010111111011001111100110000001100011101011111001101001001111111011000110110001000000011011000000101010001100111110111101011010001001001101001011101010101000101000000010110111100001011001000000000000
1011100110100000010100001100100111010001101000011110111010001011111101100111110011000000110001110101111100110100100111111101100011011000100000001101100000010101000110011111011110101101000100100110100101110101010100010100000001011011110000101100100000000000
1001110011010000001010000110010011101000110100001111011101000101111110110011111001100000011000111010111110011010010011111110110001101100010000000110110000001010100011001111101111010110100010010011010010111010101010001010000000101101111000010110010000000000
1000111001101000000101000011001001110100011010000111101110100010111111011001111100110000001100011101011111001101001001111111011000110110001000000011011000000101010001100111110111101011010001001001101001011101010101000101000000010110111100001011001000000000
1111101000011100101111111011100011101101000111111001101101100100011011111010100100101001101001111000001001000010100010111011110010011100001100011001110100101101110101101010110001000100110000100000010110011001010111001111100010101010000011010111101100000000
1011110100001110010111111101110001110110100011111100110110110010001101111101010010010100110100111100000100100001010001011101111001001110000110001100111010010110111010110101011000100010011000010000001011001100101011100111110001010101000001101011110110000000
1001111010000111001011111110111000111011010001111110011011011001000110111110101001001010011010011110000010010000101000101110111100100111000011000110011101001011011101011010101100010001001100001000000101100110010101110011111000101010100000110101111011000000
1000111101000011100101111111011100011101101000111111001101101100100011011111010100100101001101001111000001001000010100010111011110010011100001100011001110100101101110101101010110001000100110000100000010110011001010111001111100010101010000011010111101100000
1000011110100001110010111111101110001110110100011111100110110110010001101111101010010010100110100111100000100100001010001011101111001001110000110001100111010010110111010110101011000100010011000010000001011001100101011100111110001010101000001101011110110000
1000001111010000111001011111110111000111011010001111110011011011001000110111110101001001010011010011110000010010000101000101110111100100111000011000110011101001011011101011010101100010001001100001000000101100110010101110011111000101010100000110101111011000
1000000111101000011100101111111011100011101101000111111001101101100100011011111010100100101001101001111000001001000010100010111011110010011100001100011001110100101101110101101010110001000100110000100000010110011001010111001111100010101010000011010111101100
1000000011110100001110010111111101110001110110100011111100110110110010001101111101010010010100110100111100000100100001010001011101111001001110000110001100111010010110111010110101011000100010011000010000001011001100101011100111110001010101000001101011110110
1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1101110001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1010111000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1001011100010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1000101110001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1000010111000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1000001011100010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1000000101110001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1000000010111000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1110001101111011010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1011000110111101101000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1001100011011110110100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1000110001101111011010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1000011000110111101101000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1000001100011011110110100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1000000110001101111011010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1000000011000110111101101000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1101011011000010111011101100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1010101101100001011101110110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1001010110110000101110111011000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1000101011011000010111011101100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1000010101101100001011101110110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1000001010110110000101110111011000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1000000101011011000010111011101100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1000000010101101100001011101110110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1101111110100001011011010011101111000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1010111111010000101101101001110111100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1001011111101000010110110100111011110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1000101111110100001011011010011101111000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1000010111111010000101101101001110111100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1000001011111101000010110110100111011110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1000000101111110100001011011010011101111000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1000000010111111010000101101101001110111100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1100010001011010111001011101111101100110010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1010001000101101011100101110111110110011001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1001000100010110101110010111011111011001100100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1000100010001011010111001011101111101100110010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1000010001000101101011100101110111110110011001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1000001000100010110101110010111011111011001100100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1000000100010001011010111001011101111101100110010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1000000010001000101101011100101110111110110011001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1111010010011110011111011101000011101011111100011100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1011101001001111001111101110100001110101111110001110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1001110100100111100111110111010000111010111111000111000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1000111010010011110011111011101000011101011111100011100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1000011101001001111001111101110100001110101111110001110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1000001110100100111100111110111010000111010111111000111000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1000000111010010011110011111011101000011101011111100011100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1000000011101001001111001111101110100001110101111110001110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1100001110010010111000010001000111010100110000110110011111000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1010000111001001011100001000100011101010011000011011001111100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1001000011100100101110000100010001110101001100001101100111110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1000100001110010010111000010001000111010100110000110110011111000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1000010000111001001011100001000100011101010011000011011001111100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1000001000011100100101110000100010001110101001100001101100111110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1000000100001110010010111000010001000111010100110000110110011111000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1000000010000111001001011100001000100011101010011000011011001111100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1111011101001100111110110110101100100011111100000111001110011011010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1011101110100110011111011011010110010001111110000011100111001101101000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1001110111010011001111101101101011001000111111000001110011100110110100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1000111011101001100111110110110101100100011111100000111001110011011010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1100101110011110010010010110100000000000001101110100110101101111010101000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1010010111001111001001001011010000000000000110111010011010110111101010100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1001001011100111100100100101101000000000000011011101001101011011110101010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1000100101110011110010010010110100000000000001101110100110101101111010101000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1000010010111001111001001001011010000000000000110111010011010110111101010100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1000001001011100111100100100101101000000000000011011101001101011011110101010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1000000100101110011110010010010110100000000000001101110100110101101111010101000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1000000010010111001111001001001011010000000000000110111010011010110111101010100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1101101001000000110011100001010110001000001110111100111000100111001010011010010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1010110100100000011001110000101011000100000111011110011100010011100101001101001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1001011010010000001100111000010101100010000011101111001110001001110010100110100100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1000101101001000000110011100001010110001000001110111100111000100111001010011010010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1000010110100100000011001110000101011000100000111011110011100010011100101001101001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1000001011010010000001100111000010101100010000011101111001110001001110010100110100100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1000000101101001000000110011100001010110001000001110111100111000100111001010011010010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1000000010110100100000011001110000101011000100000111011110011100010011100101001101001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1111110011000110011100011000111111000011101110010001110010100010001100010011100001101100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1011111001100011001110001100011111100001110111001000111001010001000110001001110000110110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1001111100110001100111000110001111110000111011100100011100101000100011000100111000011011000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1000111110011000110011100011000111111000011101110010001110010100010001100010011100001101100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1000011111001100011001110001100011111100001110111001000111001010001000110001001110000110110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1000001111100110001100111000110001111110000111011100100011100101000100011000100111000011011000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1000000111110011000110011100011000111111000011101110010001110010100010001100010011100001101100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1000000011111001100011001110001100011111100001110111001000111001010001000110001001110000110110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1100000011001100101001010111001111101100101101010000011101111000000100101101100001000000101111000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1010000001100110010100101011100111110110010110101000001110111100000010010110110000100000010111100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1001000000110011001010010101110011111011001011010100000111011110000001001011011000010000001011110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1000100000011001100101001010111001111101100101101010000011101111000000100101101100001000000101111000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1000010000001100110010100101011100111110110010110101000001110111100000010010110110000100000010111100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1000001000000110011001010010101110011111011001011010100000111011110000001001011011000010000001011110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1000000100000011001100101001010111001111101100101101010000011101111000000100101101100001000000101111000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1000000010000001100110010100101011100111110110010110101000001110111100000010010110110000100000010111100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1110110011111111011001011001011000101010010111101100000101011011111000001101000000110100101111101111110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1011011001111111101100101100101100010101001011110110000010101101111100000110100000011010010111110111111000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1001101100111111110110010110010110001010100101111011000001010110111110000011010000001101001011111011111100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1000110110011111111011001011001011000101010010111101100000101011011111000001101000000110100101111101111110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1000011011001111111101100101100101100010101001011110110000010101101111100000110100000011010010111110111111000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1000001101100111111110110010110010110001010100101111011000001010110111110000011010000001101001011111011111100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1000000110110011111111011001011001011000101010010111101100000101011011111000001101000000110100101111101111110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1000000011011001111111101100101100101100010101001011110110000010101101111100000110100000011010010111110111111000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1100100111100100000100001001101000110101011100001000110101010101101011100111110101110111100000110100010001011100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1010010011110010000010000100110100011010101110000100011010101010110101110011111010111011110000011010001000101110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1001001001111001000001000010011010001101010111000010001101010101011010111001111101011101111000001101000100010111000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1000100100111100100000100001001101000110101011100001000110101010101101011100111110101110111100000110100010001011100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1000010010011110010000010000100110100011010101110000100011010101010110101110011111010111011110000011010001000101110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1000001001001111001000001000010011010001101010111000010001101010101011010111001111101011101111000001101000100010111000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1000000100100111100100000100001001101000110101011100001000110101010101101011100111110101110111100000110100010001011100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1000000010010011110010000010000100110100011010101110000100011010101010110101110011111010111011110000011010001000101110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1101001001111011101110101001111001010000110111010010111000111101100011101101111100000011000010110111100000001100011001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1010100100111101110111010100111100101000011011101001011100011110110001110110111110000001100001011011110000000110001100100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1001010010011110111011101010011110010100001101110100101110001111011000111011011111000000110000101101111000000011000110010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1000101001001111011101110101001111001010000110111010010111000111101100011101101111100000011000010110111100000001100011001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1000010100100111101110111010100111100101000011011101001011100011110110001110110111110000001100001011011110000000110001100100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1000001010010011110111011101010011110010100001101110100101110001111011000111011011111000000110000101101111000000011000110010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1000000101001001111011101110101001111001010000110111010010111000111101100011101101111100000011000010110111100000001100011001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1000000010100100111101110111010100111100101000011011101001011100011110110001110110111110000001100001011011110000000110001100100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1100111001101011100001010000010001100010001001111111010000101010100011010100101100000100101100111001100110110110100111101100010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1010011100110101110000101000001000110001000100111111101000010101010001101010010110000010010110011100110011011011010011110110001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1001001110011010111000010100000100011000100010011111110100001010101000110101001011000001001011001110011001101101101001111011000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1000100111001101011100001010000010001100010001001111111010000101010100011010100101100000100101100111001100110110110100111101100010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1000010011100110101110000101000001000110001000100111111101000010101010001101010010110000010010110011100110011011011010011110110001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1000001001110011010111000010100000100011000100010011111110100001010101000110101001011000001001011001110011001101101101001111011000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1000000100111001101011100001010000010001100010001001111111010000101010100011010100101100000100101100111001100110110110100111101100010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1000000010011100110101110000101000001000110001000100111111101000010101010001101010010110000010010110011100110011011011010011110110001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1111011010011000101010111010011010010100001100011100101011010110000100010111100111110000000011011000010001010010101000001100011000010100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1011101101001100010101011101001101001010000110001110010101101011000010001011110011111000000001101100001000101001010100000110001100001010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1001110110100110001010101110100110100101000011000111001010110101100001000101111001111100000000110110000100010100101010000011000110000101000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1000111011010011000101010111010011010010100001100011100101011010110000100010111100111110000000011011000010001010010101000001100011000010100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1000011101101001100010101011101001101001010000110001110010101101011000010001011110011111000000001101100001000101001010100000110001100001010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1000001110110100110001010101110100110100101000011000111001010110101100001000101111001111100000000110110000100010100101010000011000110000101000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1000000111011010011000101010111010011010010100001100011100101011010110000100010111100111110000000011011000010001010010101000001100011000010100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1000000011101101001100010101011101001101001010000110001110010101101011000010001011110011111000000001101100001000101001010100000110001100001010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1111110111010111001110100110011101101010101110011111010000000011001000001011110011110011010111001010000000100010111101101011011011010101000011000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1011111011101011100111010011001110110101010111001111101000000001100100000101111001111001101011100101000000010001011110110101101101101010100001100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1001111101110101110011101001100111011010101011100111110100000000110010000010111100111100110101110010100000001000101111011010110110110101010000110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1000111110111010111001110100110011101101010101110011111010000000011001000001011110011110011010111001010000000100010111101101011011011010101000011000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1000011111011101011100111010011001110110101010111001111101000000001100100000101111001111001101011100101000000010001011110110101101101101010100001100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1000001111101110101110011101001100111011010101011100111110100000000110010000010111100111100110101110010100000001000101111011010110110110101010000110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1000000111110111010111001110100110011101101010101110011111010000000011001000001011110011110011010111001010000000100010111101101011011011010101000011000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1000000011111011101011100111010011001110110101010111001111101000000001100100000101111001111001101011100101000000010001011110110101101101101010100001100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1100001001001101100000101111001111101011111100000010001111001110101110010000000110111100001010100110011101010011011000010010110010111111101000010010010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1010000100100110110000010111100111110101111110000001000111100111010111001000000011011110000101010011001110101001101100001001011001011111110100001001001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1001000010010011011000001011110011111010111111000000100011110011101011100100000001101111000010101001100111010100110110000100101100101111111010000100100100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1000100001001001101100000101111001111101011111100000010001111001110101110010000000110111100001010100110011101010011011000010010110010111111101000010010010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1000010000100100110110000010111100111110101111110000001000111100111010111001000000011011110000101010011001110101001101100001001011001011111110100001001001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1000001000010010011011000001011110011111010111111000000100011110011101011100100000001101111000010101001100111010100110110000100101100101111111010000100100100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1000000100001001001101100000101111001111101011111100000010001111001110101110010000000110111100001010100110011101010011011000010010110010111111101000010010010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1000000010000100100110110000010111100111110101111110000001000111100111010111001000000011011110000101010011001110101001101100001001011001011111110100001001001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1100110001110000110010110001011111000100100001010101010010110110001111101100000010011100001100001111010010010001111100110111001110101010111011011011101011000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1010011000111000011001011000101111100010010000101010101001011011000111110110000001001110000110000111101001001000111110011011100111010101011101101101110101100010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1001001100011100001100101100010111110001001000010101010100101101100011111011000000100111000011000011110100100100011111001101110011101010101110110110111010110001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1000100110001110000110010110001011111000100100001010101010010110110001111101100000010011100001100001111010010010001111100110111001110101010111011011011101011000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1000010011000111000011001011000101111100010010000101010101001011011000111110110000001001110000110000111101001001000111110011011100111010101011101101101110101100010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1000001001100011100001100101100010111110001001000010101010100101101100011111011000000100111000011000011110100100100011111001101110011101010101110110110111010110001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1000000100110001110000110010110001011111000100100001010101010010110110001111101100000010011100001100001111010010010001111100110111001110101010111011011011101011000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1000000010011000111000011001011000101111100010010000101010101001011011000111110110000001001110000110000111101001001000111110011011100111010101011101101101110101100010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1100011101001001110001010111000010111010011111000101101101111000100100101010110111001010111100110011110010111010111100001001001111010110000110000101011010000101111011000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1010001110100100111000101011100001011101001111100010110110111100010010010101011011100101011110011001111001011101011110000100100111101011000011000010101101000010111101100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1001000111010010011100010101110000101110100111110001011011011110001001001010101101110010101111001100111100101110101111000010010011110101100001100001010110100001011110110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1000100011101001001110001010111000010111010011111000101101101111000100100101010110111001010111100110011110010111010111100001001001111010110000110000101011010000101111011000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1111100110100010111100100110110111010101001101010010111011000010011001000010111100111000110001110011100110010101110001011110010110001111001100001110011111011110100000100100000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1011110011010001011110010011011011101010100110101001011101100001001100100001011110011100011000111001110011001010111000101111001011000111100110000111001111101111010000010010000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1001111001101000101111001001101101110101010011010100101110110000100110010000101111001110001100011100111001100101011100010111100101100011110011000011100111110111101000001001000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1000111100110100010111100100110110111010101001101010010111011000010011001000010111100111000110001110011100110010101110001011110010110001111001100001110011111011110100000100100000000000000000000000000000000000000000000000000000000000000000000000000000000000
1000011110011010001011110010011011011101010100110101001011101100001001100100001011110011100011000111001110011001010111000101111001011000111100110000111001111101111010000010010000000000000000000000000000000000000000000000000000000000000000000000000000000000
1000001111001101000101111001001101101110101010011010100101110110000100110010000101111001110001100011100111001100101011100010111100101100011110011000011100111110111101000001001000000000000000000000000000000000000000000000000000000000000000000000000000000000
1000000111100110100010111100100110110111010101001101010010111011000010011001000010111100111000110001110011100110010101110001011110010110001111001100001110011111011110100000100100000000000000000000000000000000000000000000000000000000000000000000000000000000
1000000011110011010001011110010011011011101010100110101001011101100001001100100001011110011100011000111001110011001010111000101111001011000111100110000111001111101111010000010010000000000000000000000000000000000000000000000000000000000000000000000000000000
1101101110010001110100001101011011111100100111011010110101100000100010011001111100011011110111000010001001110000111010000010000000000101111101011111110011101110000000000111011011000000000000000000000000000000000000000000000000000000000000000000000000000000
1010110111001000111010000110101101111110010011101101011010110000010001001100111110001101111011100001000100111000011101000001000000000010111110101111111001110111000000000011101101100000000000000000000000000000000000000000000000000000000000000000000000000000
1001011011100100011101000011010110111111001001110110101101011000001000100110011111000110111101110000100010011100001110100000100000000001011111010111111100111011100000000001110110110000000000000000000000000000000000000000000000000000000000000000000000000000
1000101101110010001110100001101011011111100100111011010110101100000100010011001111100011011110111000010001001110000111010000010000000000101111101011111110011101110000000000111011011000000000000000000000000000000000000000000000000000000000000000000000000000
1000010110111001000111010000110101101111110010011101101011010110000010001001100111110001101111011100001000100111000011101000001000000000010111110101111111001110111000000000011101101100000000000000000000000000000000000000000000000000000000000000000000000000
1000001011011100100011101000011010110111111001001110110101101011000001000100110011111000110111101110000100010011100001110100000100000000001011111010111111100111011100000000001110110110000000000000000000000000000000000000000000000000000000000000000000000000
1000000101101110010001110100001101011011111100100111011010110101100000100010011001111100011011110111000010001001110000111010000010000000000101111101011111110011101110000000000111011011000000000000000000000000000000000000000000000000000000000000000000000000
1000000010110111001000111010000110101101111110010011101101011010110000010001001100111110001101111011100001000100111000011101000001000000000010111110101111111001110111000000000011101101100000000000000000000000000000000000000000000000000000000000000000000000
1101110000011000111100010010110001011111101101010011110000101010001001001101000010110011100100110110010100100010111100001101101101100101100010110001001011000010101000100111001010000001010000000000000000000000000000000000000000000000000000000000000000000000
1010111000001100011110001001011000101111110110101001111000010101000100100110100001011001110010011011001010010001011110000110110110110010110001011000100101100001010100010011100101000000101000000000000000000000000000000000000000000000000000000000000000000000
1001011100000110001111000100101100010111111011010100111100001010100010010011010000101100111001001101100101001000101111000011011011011001011000101100010010110000101010001001110010100000010100000000000000000000000000000000000000000000000000000000000000000000
1000101110000011000111100010010110001011111101101010011110000101010001001001101000010110011100100110110010100100010111100001101101101100101100010110001001011000010101000100111001010000001010000000000000000000000000000000000000000000000000000000000000000000
1000010111000001100011110001001011000101111110110101001111000010101000100100110100001011001110010011011001010010001011110000110110110110010110001011000100101100001010100010011100101000000101000000000000000000000000000000000000000000000000000000000000000000
1000001011100000110001111000100101100010111111011010100111100001010100010010011010000101100111001001101100101001000101111000011011011011001011000101100010010110000101010001001110010100000010100000000000000000000000000000000000000000000000000000000000000000
1000000101110000011000111100010010110001011111101101010011110000101010001001001101000010110011100100110110010100100010111100001101101101100101100010110001001011000010101000100111001010000001010000000000000000000000000000000000000000000000000000000000000000
1000000010111000001100011110001001011000101111110110101001111000010101000100100110100001011001110010011011001010010001011110000110110110110010110001011000100101100001010100010011100101000000101000000000000000000000000000000000000000000000000000000000000000
1100000110110001101010000111011101011110100011111011010101101001011010111100100100011011011110000000111000111111101110111100010101100110101010110001001101110011100101101000101111001001101111000100000000000000000000000000000000000000000000000000000000000000
1010000011011000110101000011101110101111010001111101101010110100101101011110010010001101101111000000011100011111110111011110001010110011010101011000100110111001110010110100010111100100110111100010000000000000000000000000000000000000000000000000000000000000
1001000001101100011010100001110111010111101000111110110101011010010110101111001001000110110111100000001110001111111011101111000101011001101010101100010011011100111001011010001011110010011011110001000000000000000000000000000000000000000000000000000000000000
1000100000110110001101010000111011101011110100011111011010101101001011010111100100100011011011110000000111000111111101110111100010101100110101010110001001101110011100101101000101111001001101111000100000000000000000000000000000000000000000000000000000000000
1000010000011011000110101000011101110101111010001111101101010110100101101011110010010001101101111000000011100011111110111011110001010110011010101011000100110111001110010110100010111100100110111100010000000000000000000000000000000000000000000000000000000000
1000001000001101100011010100001110111010111101000111110110101011010010110101111001001000110110111100000001110001111111011101111000101011001101010101100010011011100111001011010001011110010011011110001000000000000000000000000000000000000000000000000000000000
1000000100000110110001101010000111011101011110100011111011010101101001011010111100100100011011011110000000111000111111101110111100010101100110101010110001001101110011100101101000101111001001101111000100000000000000000000000000000000000000000000000000000000
1000000010000011011000110101000011101110101111010001111101101010110100101101011110010010001101101111000000011100011111110111011110001010110011010101011000100110111001110010110100010111100100110111100010000000000000000000000000000000000000000000000000000000
1111100011110111001101110000011010001001001000111101101000100000101101111011010110001100001101010110001101000010110000011000110101111010101100000110110100000000100100000101110000010101010001101100110111000000000000000000000000000000000000000000000000000000
1011110001111011100110111000001101000100100100011110110100010000010110111101101011000110000110101011000110100001011000001100011010111101010110000011011010000000010010000010111000001010101000110110011011100000000000000000000000000000000000000000000000000000
1001111000111101110011011100000110100010010010001111011010001000001011011110110101100011000011010101100011010000101100000110001101011110101011000001101101000000001001000001011100000101010100011011001101110000000000000000000000000000000000000000000000000000
1000111100011110111001101110000011010001001001000111101101000100000101101111011010110001100001101010110001101000010110000011000110101111010101100000110110100000000100100000101110000010101010001101100110111000000000000000000000000000000000000000000000000000
1000011110001111011100110111000001101000100100100011110110100010000010110111101101011000110000110101011000110100001011000001100011010111101010110000011011010000000010010000010111000001010101000110110011011100000000000000000000000000000000000000000000000000
1000001111000111101110011011100000110100010010010001111011010001000001011011110110101100011000011010101100011010000101100000110001101011110101011000001101101000000001001000001011100000101010100011011001101110000000000000000000000000000000000000000000000000
1000000111100011110111001101110000011010001001001000111101101000100000101101111011010110001100001101010110001101000010110000011000110101111010101100000110110100000000100100000101110000010101010001101100110111000000000000000000000000000000000000000000000000
1000000011110001111011100110111000001101000100100100011110110100010000010110111101101011000110000110101011000110100001011000001100011010111101010110000011011010000000010010000010111000001010101000110110011011100000000000000000000000000000000000000000000000
1110111100110001101010101101001010000011011000101000000101001000011001001101001100001110110110010100101111100110110010011000001111111110100001000110110000110011101011001011010011000111100000010001101110110101010000000000000000000000000000000000000000000000
1011011110011000110101010110100101000001101100010100000010100100001100100110100110000111011011001010010111110011011001001100000111111111010000100011011000011001110101100101101001100011110000001000110111011010101000000000000000000000000000000000000000000000
1100001101100101000101010000111101100010000010110110000110111110010011111000111001001010000000111011110011101100000111110010001011111110011001110100000100100110100100011100001110010101101000011101000010000010101100000000000000000000000000000000000000000000
1010000110110010100010101000011110110001000001011011000011011111001001111100011100100101000000011101111001110110000011111001000101111111001100111010000010010011010010001110000111001010110100001110100001000001010110000000000000000000000000000000000000000000
1001000011011001010001010100001111011000100000101101100001101111100100111110001110010010100000001110111100111011000001111100100010111111100110011101000001001001101001000111000011100101011010000111010000100000101011000000000000000000000000000000000000000000
1000100001101100101000101010000111101100010000010110110000110111110010011111000111001001010000000111011110011101100000111110010001011111110011001110100000100100110100100011100001110010101101000011101000010000010101100000000000000000000000000000000000000000
1000010000110110010100010101000011110110001000001011011000011011111001001111100011100100101000000011101111001110110000011111001000101111111001100111010000010010011010010001110000111001010110100001110100001000001010110000000000000000000000000000000000000000
1000001000011011001010001010100001111011000100000101101100001101111100100111110001110010010100000001110111100111011000001111100100010111111100110011101000001001001101001000111000011100101011010000111010000100000101011000000000000000000000000000000000000000
1000000100001101100101000101010000111101100010000010110110000110111110010011111000111001001010000000111011110011101100000111110010001011111110011001110100000100100110100100011100001110010101101000011101000010000010101100000000000000000000000000000000000000
1000000010000110110010100010101000011110110001000001011011000011011111001001111100011100100101000000011101111001110110000011111001000101111111001100111010000010010011010010001110000111001010110100001110100001000001010110000000000000000000000000000000000000
1110000000001001000110000001111110111001101110001001011111001110010110001110010110001111100011000111101110111000010001000110101111110001101001010111001001111111100001100001111000000111011000101101010000110110011110100101000000000000000000000000000000000000
1011000000000100100011000000111111011100110111000100101111100111001011000111001011000111110001100011110111011100001000100011010111111000110100101011100100111111110000110000111100000011101100010110101000011011001111010010100000000000000000000000000000000000
1001100000000010010001100000011111101110011011100010010111110011100101100011100101100011111000110001111011101110000100010001101011111100011010010101110010011111111000011000011110000001110110001011010100001101100111101001010000000000000000000000000000000000
1000110000000001001000110000001111110111001101110001001011111001110010110001110010110001111100011000111101110111000010001000110101111110001101001010111001001111111100001100001111000000111011000101101010000110110011110100101000000000000000000000000000000000
1000011000000000100100011000000111111011100110111000100101111100111001011000111001011000111110001100011110111011100001000100011010111111000110100101011100100111111110000110000111100000011101100010110101000011011001111010010100000000000000000000000000000000
1000001100000000010010001100000011111101110011011100010010111110011100101100011100101100011111000110001111011101110000100010001101011111100011010010101110010011111111000011000011110000001110110001011010100001101100111101001010000000000000000000000000000000
1000000110000000001001000110000001111110111001101110001001011111001110010110001110010110001111100011000111101110111000010001000110101111110001101001010111001001111111100001100001111000000111011000101101010000110110011110100101000000000000000000000000000000
1000000011000000000100100011000000111111011100110111000100101111100111001011000111001011000111110001100011110111011100001000100011010111111000110100101011100100111111110000110000111100000011101100010110101000011011001111010010100000000000000000000000000000
1111110000101011101110000001000100001111101011001101010000011000001100100001111100100000010001010110010001010010001110101100100111111110100011110010100000001011000111010101101011001100111000110111011011110101101100111101010000110000000000000000000000000000
1011111000010101110111000000100010000111110101100110101000001100000110010000111110010000001000101011001000101001000111010110010011111111010001111001010000000101100011101010110101100110011100011011101101111010110110011110101000011000000000000000000000000000
1001111100001010111011100000010001000011111010110011010100000110000011001000011111001000000100010101100100010100100011101011001001111111101000111100101000000010110001110101011010110011001110001101110110111101011011001111010100001100000000000000000000000000
1000111110000101011101110000001000100001111101011001101010000011000001100100001111100100000010001010110010001010010001110101100100111111110100011110010100000001011000111010101101011001100111000110111011011110101101100111101010000110000000000000000000000000
1000011111000010101110111000000100010000111110101100110101000001100000110010000111110010000001000101011001000101001000111010110010011111111010001111001010000000101100011101010110101100110011100011011101101111010110110011110101000011000000000000000000000000
1000001111100001010111011100000010001000011111010110011010100000110000011001000011111001000000100010101100100010100100011101011001001111111101000111100101000000010110001110101011010110011001110001101110110111101011011001111010100001100000000000000000000000
1000000111110000101011101110000001000100001111101011001101010000011000001100100001111100100000010001010110010001010010001110101100100111111110100011110010100000001011000111010101101011001100111000110111011011110101101100111101010000110000000000000000000000
1000000011111000010101110111000000100010000111110101100110101000001100000110010000111110010000001000101011001000101001000111010110010011111111010001111001010000000101100011101010110101100110011100011011101101111010110110011110101000011000000000000000000000
1101010111110111001110100101011011001001100011100010100110101100100010101010001101001111000110101011101000001100001110111010010110000100010100011111000011110101100110111111100000000011101011010110110000011000111101010101100010011101010100000000000000000000
1010101011111011100111010010101101100100110001110001010011010110010001010101000110100111100011010101110100000110000111011101001011000010001010001111100001111010110011011111110000000001110101101011011000001100011110101010110001001110101010000000000000000000
1001010101111101110011101001010110110010011000111000101001101011001000101010100011010011110001101010111010000011000011101110100101100001000101000111110000111101011001101111111000000000111010110101101100000110001111010101011000100111010101000000000000000000
1000101010111110111001110100101011011001001100011100010100110101100100010101010001101001111000110101011101000001100001110111010010110000100010100011111000011110101100110111111100000000011101011010110110000011000111101010101100010011101010100000000000000000
1000010101011111011100111010010101101100100110001110001010011010110010001010101000110100111100011010101110100000110000111011101001011000010001010001111100001111010110011011111110000000001110101101011011000001100011110101010110001001110101010000000000000000
1000001010101111101110011101001010110110010011000111000101001101011001000101010100011010011110001101010111010000011000011101110100101100001000101000111110000111101011001101111111000000000111010110101101100000110001111010101011000100111010101000000000000000
1000000101010111110111001110100101011011001001100011100010100110101100100010101010001101001111000110101011101000001100001110111010010110000100010100011111000011110101100110111111100000000011101011010110110000011000111101010101100010011101010100000000000000
1000000010101011111011100111010010101101100100110001110001010011010110010001010101000110100111100011010101110100000110000111011101001011000010001010001111100001111010110011011111110000000001110101101011011000001100011110101010110001001110101010000000000000
1111001101000000101000011001001110100011010000111101110100010111111011001111100110000001100011101011111001101001001111111011000110110001000000011011000000101010001100111110111101011010001001001101001011101010101000101000000010110111100001011001000000000000
1011100110100000010100001100100111010001101000011110111010001011111101100111110011000000110001110101111100110100100111111101100011011000100000001101100000010101000110011111011110101101000100100110100101110101010100010100000001011011110000101100100000000000
1001110011010000001010000110010011101000110100001111011101000101111110110011111001100000011000111010111110011010010011111110110001101100010000000110110000001010100011001111101111010110100010010011010010111010101010001010000000101101111000010110010000000000
1000111001101000000101000011001001110100011010000111101110100010111111011001111100110000001100011101011111001101001001111111011000110110001000000011011000000101010001100111110111101011010001001001101001011101010101000101000000010110111100001011001000000000
1111101000011100101111111011100011101101000111111001101101100100011011111010100100101001101001111000001001000010100010111011110010011100001100011001110100101101110101101010110001000100110000100000010110011001010111001111100010101010000011010111101100000000
1011110100001110010111111101110001110110100011111100110110110010001101111101010010010100110100111100000100100001010001011101111001001110000110001100111010010110111010110101011000100010011000010000001011001100101011100111110001010101000001101011110110000000
1001111010000111001011111110111000111011010001111110011011011001000110111110101001001010011010011110000010010000101000101110111100100111000011000110011101001011011101011010101100010001001100001000000101100110010101110011111000101010100000110101111011000000
1000111101000011100101111111011100011101101000111111001101101100100011011111010100100101001101001111000001001000010100010111011110010011100001100011001110100101101110101101010110001000100110000100000010110011001010111001111100010101010000011010111101100000
1000011110100001110010111111101110001110110100011111100110110110010001101111101010010010100110100111100000100100001010001011101111001001110000110001100111010010110111010110101011000100010011000010000001011001100101011100111110001010101000001101011110110000
1000001111010000111001011111110111000111011010001111110011011011001000110111110101001001010011010011110000010010000101000101110111100100111000011000110011101001011011101011010101100010001001100001000000101100110010101110011111000101010100000110101111011000
1000000111101000011100101111111011100011101101000111111001101101100100011011111010100100101001101001111000001001000010100010111011110010011100001100011001110100101101110101101010110001000100110000100000010110011001010111001111100010101010000011010111101100
1000000011110100001110010111111101110001110110100011111100110110110010001101111101010010010100110100111100000100100001010001011101111001001110000110001100111010010110111010110101011000100010011000010000001011001100101011100111110001010101000001101011110110
1000000001111010000111001011111110111000111011010001111110011011011001000110111110101001001010011010011110000010010000101000101110111100100111000011000110011101001011011101011010101100010001001100001000000101100110010101110011111000101010100000110101111011
其对应的BCH码的生成矩阵的形式可以为以上任一矩阵的2-256行,2-256列组成的子矩阵。
基于上述实施例,本申请实施例提供的编码方法中所述涉及到的打孔(puncture)序列和缩短(shorten)序列。可用于基于生成矩阵的BCH生成方法,或者基于生成多项式的BCH生成方法的速率匹配。示例性的,下面列举了本申请适用的打孔序列和缩短序列。
对于打孔(puncture)序列:
若母码长N为2,3,4,7,8,则打孔序列可以使用顺序序列,即1,2,3,……,N。
若母码长为16,打孔序列可以是以下可能的序列:
P16=1;2;3;4;5;6;7;8(顺序序列)。
P16=1;2;3;4;5;14;6;7。
P16=1;2;3;4;5;14;6;10。
P16=1;2;3;4;5;14;6;13。
P16=1;2;3;4;5;14;6;15。
P16=1;2;3;4;5;14;7;6。
P16=1;2;3;4;5;14;7;9。
P16=1;2;3;4;5;14;7;10。
P16=1;2;3;4;5;14;7;15。
P16=1;2;3;4;5;14;9;7。
P16=1;2;3;4;5;14;9;10。
P16=1;2;3;4;5;14;9;13。
P16=1;2;3;4;5;14;9;15。
P16=1;2;3;4;5;14;10;6。
P16=1;2;3;4;5;14;10;7。
P16=1;2;3;4;5;14;10;9。
P16=1;2;3;4;5;14;10;13。
P16=1;2;3;4;5;14;13;6。
P16=1;2;3;4;5;14;13;9。
P16=1;2;3;4;5;14;13;10。
P16=1;2;3;4;5;14;13;15。
P16=1;2;3;4;5;14;15;6。
P16=1;2;3;4;5;14;15;7。
P16=1;2;3;4;5;14;15;9。
P16=1;2;3;4;5;14;15;13。
P16=1;2;3;4;8;9;7;10。
P16=1;2;3;4;8;9;7;12。
P16=1;2;3;4;8;9;7;14。
P16=1;2;3;4;8;9;7;15。
P16=1;2;3;4;8;9;10;7。
P16=1;2;3;4;8;9;10;12。
P16=1;2;3;4;8;9;10;13。
P16=1;2;3;4;8;9;10;14。
若母码长为15,打孔序列可以是P16中除了P16=1;2;3;4;5;6;7;8以外的任一个打孔序列中元素减一的序列。例如,P15={1;2;3;4;8;9;10;14}-1=1;2;3;7;8;9;13。
若母码长为32,打孔序列可以是以下可能的序列:
P32=1;2;3;……;16(顺序序列)。
P32=1;11;19;31;2;17;6;9;3;24;4;16;8;21;5;7。
P32=1;4;14;25;21;12;8;23;26;2;20;15;28;30;18;11。
P32=1;4;14;25;21;12;8;23;26;2;20;15;28;30;11;18。
P32=1;4;8;29;24;3;14;15;11;7;13;23;19;32;26;17。
P32=1;4;8;29;24;3;14;15;11;7;13;23;19;32;17;26。
P32=1;4;14;25;21;12;8;23;26;2;20;15;31;5;9;30。
P32=1;4;8;29;24;3;14;15;11;7;13;23;19;2;18;31。
P32=1;4;14;25;21;12;8;23;26;2;20;15;28;7;10;17。
P32=1;4;14;25;21;12;8;23;26;2;20;15;28;17;7;10。
P32=1;4;14;25;21;12;8;23;26;2;20;15;30;28;11;18。
P32=1;4;14;25;21;12;8;23;26;2;20;15;11;18;30;28。
P32=1;4;14;25;21;12;8;23;26;2;20;15;30;28;18;11。
P32=1;4;14;25;21;12;8;23;26;2;20;15;18;11;30;28。
P32=1;4;14;25;21;12;8;23;26;2;20;15;5;31;9;30。
P32=1;4;8;29;24;3;14;15;11;7;13;23;10;22;6;32。
P32=1;4;8;29;24;3;14;15;11;7;13;23;22;10;6;32。
P32=1;4;8;29;24;3;14;15;11;7;13;23;19;2;31;18。
P32=1;4;8;29;24;3;14;15;11;7;13;23;19;18;2;31。
P32=1;4;8;29;24;3;14;15;11;7;13;23;32;19;17;26。
P32=1;4;14;25;21;12;8;23;26;2;20;15;28;7;17;10。
P32=1;4;8;29;24;3;14;15;11;7;13;23;32;19;26;17。
P32=1;26;11;4;24;25;12;29;22;14;20;2;13;7;31;23。
P32=1;26;4;11;29;12;24;25;22;14;2;20;5;8;21;28。
P32=1;26;11;4;12;29;24;25;20;2;14;22;21;5;8;28。
P32=1;26;11;4;24;25;29;12;5;8;7;13;20;10;2;15。
P32=1;4;8;29;24;3;14;15;11;7;13;23;19;32;17;16。
P32=1;26;4;11;29;12;24;25;14;22;20;2;18;27;30;9。
P32=1;26;4;11;12;29;25;24;14;22;20;2;7;13;5;8。
P32=1;4;8;29;24;3;14;15;11;7;13;23;19;2;18;22。
P32=1;26;11;4;29;12;24;25;6;32;16;17;23;30;9;31。
P32=1;26;4;11;24;25;29;12;8;5;7;13;22;3;14;19。
P32=1;26;11;4;25;24;12;29;13;7;5;8;2;20;10;15。
P32=1;26;4;11;24;25;29;12;30;9;27;18;19;16;17;3。
若母码长为31,打孔序列可以是P32中除了P32=1;2;3;……;16以外的任一个打孔序列中元素减一的序列。例如,P31={1;26;4;11;24;25;29;12;30;9;27;18;19;16;17;3}-1=25;3;10;23;24;28;11;29;8;26;17;18;15;16;2。
若母码长为64,打孔序列可以是以下可能的序列:
P64=1;2;3;……;32(顺序序列)。
P64=1;61;25;52;35;58;13;29;5;11;45;49;8;17;20;56;59;4;55;39;62;15;3;16;36;40;64;24;6;26;44;48。
P64=1;61;25;52;35;58;13;29;5;11;45;49;56;17;8;20;59;4;55;62;39;15;3;16;36;40;64;24;6;26;47;43。
P64=1;61;25;52;35;58;13;29;5;11;45;49;56;17;8;20;59;4;55;62;39;15;3;16;36;40;64;24;26;6;32;48。
P64=1;61;25;52;35;58;13;29;5;11;45;49;56;17;8;20;59;4;55;62;39;15;3;16;36;64;40;24;6;26;48;32。
P64=1;61;25;52;35;58;13;29;5;11;45;49;8;17;20;56;59;4;55;39;62;15;3;16;36;64;40;24;26;6;31;51。
P64=1;61;25;52;35;58;13;29;5;11;45;49;8;17;20;56;59;4;55;39;62;15;3;16;36;64;40;24;26;6;60;51。
P64=1;61;25;52;35;58;13;29;5;11;45;49;8;17;20;56;59;4;55;39;62;15;3;16;36;64;40;24;26;6;48;46。
P64=1;61;25;52;35;58;13;29;5;11;45;49;56;17;8;20;59;4;55;62;39;15;3;16;36;40;64;24;26;6;60;51。
P64=1;61;25;52;35;58;13;29;5;11;45;49;8;17;20;56;59;4;55;62;39;15;3;16;36;40;64;24;26;6;43;47。
P64=1;61;25;52;35;58;13;29;5;11;45;49;8;17;20;56;59;4;55;62;39;15;3;16;36;64;40;24;6;26;48;32。
P64=1;61;25;52;35;58;13;29;5;11;45;49;8;17;20;56;59;4;55;39;62;15;3;16;36;40;64;24;6;26;48;32。
P64=1;61;25;52;35;58;13;29;5;11;45;49;8;17;20;56;59;4;55;39;62;15;3;16;36;40;64;24;26;6;47;43。
P64=1;61;25;52;35;58;13;29;5;11;45;49;8;17;20;56;59;4;55;62;39;15;3;16;36;64;40;24;26;6;51;60。
P64=1;61;25;52;35;58;13;29;5;11;45;49;8;17;20;56;59;4;55;62;39;15;3;16;36;40;64;24;26;6;48;46。
P64=1;61;25;52;35;58;13;29;5;11;45;49;56;17;8;20;59;4;55;62;39;15;3;16;36;64;40;24;26;6;44;48。
P64=1;61;25;52;35;58;13;29;5;11;45;49;8;17;20;56;59;4;55;39;62;15;3;16;36;40;64;24;6;26;51;46。
P64=1;2;41;56;11;60;53;39;64;15;12;29;63;61;33;5;44;16;4;10;54;28;9;59;38;58;23;8;42;47;48;50。
P64=1;2;41;56;11;60;53;39;64;15;12;29;63;61;33;5;44;16;4;10;54;28;9;59;38;58;23;8;42;47;50;48。
P64=1;2;41;56;11;60;53;39;64;15;12;29;63;61;33;5;44;16;4;10;54;28;9;59;58;38;23;8;42;47;48;50。
P64=1;2;41;56;11;60;53;39;64;15;12;29;63;61;33;5;44;16;4;10;54;28;9;59;58;38;23;8;42;47;50;48。
P64=1;2;41;56;11;60;53;39;64;15;12;29;63;61;33;5;44;16;10;4;54;28;9;59;38;58;23;8;42;47;48;50。
P64=1;2;41;56;11;60;53;39;64;15;12;29;63;61;33;5;44;16;10;4;54;28;9;59;38;58;23;8;42;47;50;48。
P64=1;2;41;56;11;60;53;39;64;15;12;29;63;61;33;5;44;16;10;4;54;28;9;59;58;38;23;8;42;47;48;50。
P64=1;2;41;56;11;60;53;39;64;15;12;29;63;61;33;5;44;16;10;4;54;28;9;59;58;38;23;8;42;47;50;48。
P64=1;2;45;38;47;59;55;46;7;37;63;20;12;22;36;34;23;54;14;50;16;9;28;60;21;56;44;3;57;11;10;32。
P64=1;2;45;38;47;59;55;46;7;37;63;20;12;22;36;34;23;54;14;50;16;9;28;60;21;56;44;3;57;11;32;10。
P64=1;2;45;38;47;59;55;46;7;37;63;20;12;22;36;34;23;54;14;50;16;9;28;60;56;21;44;3;57;11;10;32。
P64=1;2;45;38;47;59;55;46;7;37;63;20;12;22;36;34;23;54;14;50;16;9;28;60;56;21;44;3;57;11;32;10。
P64=1;2;45;38;47;59;55;46;7;37;63;20;12;22;36;34;23;54;50;14;16;9;28;60;21;56;44;3;57;11;10;32。
P64=1;2;45;38;47;59;55;46;7;37;63;20;12;22;36;34;23;54;50;14;16;9;28;60;21;56;44;3;57;11;32;10。
P64=1;2;45;38;47;59;55;46;7;37;63;20;12;22;36;34;23;54;50;14;16;9;28;60;56;21;44;3;57;11;10;32。
P64=1;2;45;38;47;59;55;46;7;37;63;20;12;22;36;34;23;54;50;14;16;9;28;60;56;21;44;3;57;11;32;10。
若母码长为63,打孔序列可以是P64中除了P64=1;2;3;……;32以外的任一个打孔序列中元素减一的序列。例如,P63={1;2;45;38;47;59;55;46;7;37;63;20;12;22;36;34;23;54;50;14;16;9;28;60;56;21;44;3;57;11;32;10}-1=1;44;37;46;58;54;45;6;36;62;19;11;21;35;33;22;53;49;13;15;8;27;59;55;20;43;2;56;10;31;9。
若母码长为128,打孔序列可以是:
P128=1;2;3;……;64(顺序序列)。
P128=1;9;35;37;15;43;22;126;95;38;101;69;44;24;63;110;60;117;2;120;17;84;118;4;127;31;123;82;112;34;99;29;51;116;108;125;111;104;114;77;83;85;105;79;113;28;86;33;90;73;78;80;70;124;75;71;72;68;59;21;67;93;62;58。
若母码长为127,打孔序列可以是P128中除了P128=1;2;3;……;64以外的任一个打孔序列中元素减一的序列。例如,P127={1;9;35;37;15;43;22;126;95;38;101;69;44;24;63;110;60;117;2;120;17;84;118;4;127;31;123;82;112;34;99;29;51;116;108;125;111;104;114;77;83;85;105;79;113;28;86;33;90;73;78;80;70;124;75;71;72;68;59;21;67;93;62;58}=8;34;36;14;42;21;125;94;37;100;68;43;23;62;109;59;116;1;119;16;83;117;3;126;30;122;81;111;33;98;28;50;115;107;124;110;103;113;76;82;84;104;78;112;27;85;32;89;72;77;79;69;123;74;70;71;67;58;20;66;92;61;57。
对于缩短(shorten)序列:
若母码长N为2,3,4,7,8,则可以使用逆序序列,即N,N-1,……,3,2,1。
若母码长为16,缩短序列可以是以下可能的序列:
S16=16;15;14;13;12;11;10;9(逆序序列)。
S16=16;14;12;15;13;11;7;10。
S16=16;14;12;15;13;11;10;7。
S16=16;14;12;15;13;11;10;8。
S16=16;14;12;15;13;11;10;9。
S16=16;14;15;12;13;11;7;10。
S16=16;14;15;12;13;11;10;7。
S16=16;14;15;12;13;11;10;8。
S16=16;14;15;12;13;11;10;9。
S16=16;14;15;13;11;12;7;10。
S16=16;14;15;13;11;12;10;7。
S16=16;14;15;13;11;12;10;8。
S16=16;14;15;13;11;12;10;9。
S16=16;14;15;13;12;11;7;10。
S16=16;14;15;13;12;11;10;7。
S16=16;14;15;13;12;11;10;8。
S16=16;14;15;13;12;11;10;9。
S16=16;15;13;11;14;12;7;10。
S16=16;15;13;11;14;12;10;7。
S16=16;15;13;11;14;12;10;8。
S16=16;15;13;11;14;12;10;9。
S16=16;15;13;14;11;12;7;10。
S16=16;15;13;14;11;12;10;7。
S16=16;15;13;14;11;12;10;8。
S16=16;15;13;14;11;12;10;9。
S16=16;15;13;14;12;11;7;10。
S16=16;15;13;14;12;11;10;7。
S16=16;15;13;14;12;11;10;8。
S16=16;15;13;14;12;11;10;9。
S16=16;15;14;12;13;11;7;10。
S16=16;15;14;12;13;11;10;7。
S16=16;15;14;12;13;11;10;8。
S16=16;15;14;12;13;11;10;9。
若母码长为15,缩短序列可以是S16-1,也即上述任一个S16中元素减一的序列。例如,S15={16;15;14;12;13;11;10;9}-1=15;14;13;11;12;10;9;8。
若母码长为32,缩短序列可以是以下可能的序列:
S32=32;31;……;18;17(逆序序列)。
S32=32;31;30;29;25;28;27;18;26;23;24;21;17;22;19;20。
S32=32;31;30;29;28;27;26;25;24;23;21;17;22;19;20;16。
S32=32;31;30;29;25;28;27;26;23;18;24;22;20;21;17;19。
S32=32;31;30;29;28;27;25;26;18;24;22;19;23;20;21;16。
S32=32;31;30;29;28;25;27;26;24;22;23;21;17;20;18;19。
S32=32;31;30;29;28;27;26;25;23;24;18;22;20;21;19;16。
S32=32;31;30;29;28;27;25;26;23;24;22;21;20;18;16;17。
S32=32;31;30;29;28;27;26;25;24;23;22;19;21;20;16;17。
S32=32;31;30;29;28;25;27;26;24;22;18;23;19;20;21;16。
S32=32;31;30;29;28;27;26;24;25;22;23;21;18;19;17;20。
S32=32;31;30;29;28;27;25;26;18;23;24;21;22;19;20;16。
S32=32;31;30;29;28;27;25;26;23;24;22;20;21;18;16;17。
S32=32;31;30;29;25;28;27;26;23;24;18;21;22;19;20;17。
S32=32;31;30;29;28;25;27;26;23;24;22;18;21;17;20;19。
S32=32;31;30;29;25;28;27;26;24;23;22;19;18;20;21;16。
S32=32;31;30;29;28;27;25;18;26;23;24;22;21;19;20;16。
S32=32;31;30;29;28;27;25;26;24;23;21;22;17;20;18;16。
S32=32;31;30;29;28;27;25;26;18;23;24;22;19;20;21;16。
S32=32;31;30;29;28;27;26;25;24;22;19;23;21;18;20;17。
S32=32;31;30;29;25;28;27;26;24;18;23;21;22;19;20;16。
S32=32;31;30;29;28;25;27;26;24;22;23;20;21;17;19;16。
S32=32;31;30;29;28;25;27;26;24;22;23;18;20;21;19;16。
S32=32;31;30;29;28;27;26;25;23;24;18;22;21;20;17;16。
S32=32;31;30;29;25;28;27;26;24;22;23;21;17;18;20;16。
S32=32;31;30;29;28;27;25;26;23;24;22;21;18;17;20;16。
S32=32;31;30;29;25;28;27;26;23;24;22;18;21;20;17;16。
S32=32;31;30;29;25;28;27;26;24;18;23;22;21;20;19;16。
S32=32;31;30;29;28;27;26;24;25;22;23;18;21;19;20;17。
S32=32;31;30;29;28;27;26;25;23;24;22;20;21;17;18;16。
S32=32;31;30;29;28;27;26;24;25;18;22;23;19;21;17;20。
S32=32;31;30;29;28;27;26;25;24;23;18;21;22;20;17;16。
S32=32;31;30;29;28;27;26;25;24;18;23;21;17;22;20;16。
S32=32;31;30;29;28;25;27;26;23;24;18;21;22;19;20;17。
若母码长为31,缩短序列可以是S32-1,也即上述任一个S32中元素减一的序列。例如,S31={32;31;30;29;28;25;27;26;23;24;18;21;22;19;20;17}-1=31;30;29;28;27;24;26;25;22;23;17;20;21;18;19;16。
若母码长为64,缩短序列可以是:
S64=64;63;……;34;33(逆序序列)。
S64=64;62;60;58;63;56;61;59;55;57;54;53;52;51;47;50;49;48;46;45;44;43;42;41;40;39;38;37;36;33;35;30。
S64=64;62;60;58;63;61;59;57;54;55;56;53;52;51;47;50;49;48;46;45;44;43;42;41;40;39;38;37;36;35;32;34。
S64=64;62;60;58;63;61;59;57;56;55;54;53;52;51;50;49;48;46;47;45;44;43;42;41;40;39;38;37;36;35;32;31。
S64=64;63;62;61;60;58;59;56;55;57;54;53;52;51;50;49;47;48;46;45;44;43;42;41;40;39;38;37;36;35;32;31。
S64=64;62;60;63;61;59;58;56;55;57;54;53;52;51;50;47;49;48;46;45;44;43;42;41;40;39;38;37;36;35;32;34。
S64=64;62;63;60;61;59;58;55;57;54;56;53;52;51;47;50;49;48;46;45;44;43;42;41;40;39;38;37;36;35;32;33。
S64=64;62;60;63;61;58;59;56;55;57;54;53;52;51;50;49;47;48;46;45;44;43;42;41;40;39;38;37;36;35;32;30。
S64=64;62;60;58;63;56;61;59;55;57;54;53;52;51;50;47;49;48;46;45;44;43;42;41;40;39;38;37;36;35;32;31。
S64=64;63;61;62;60;59;58;56;57;54;53;55;52;51;50;49;48;47;46;45;44;43;42;41;40;39;38;37;36;35;32;31。
S64=64;63;61;62;60;59;58;56;57;54;53;55;52;51;50;49;48;46;47;45;44;43;42;41;40;39;38;37;36;35;32;31。
S64=64;62;63;60;58;61;59;57;54;55;56;53;52;51;50;49;48;46;47;45;44;43;42;41;40;39;38;37;36;35;32;33。
S64=64;63;61;62;59;60;58;57;55;54;56;53;52;51;50;49;47;48;46;45;44;43;42;41;40;39;38;37;36;35;32;33。
S64=64;63;61;59;62;60;55;57;58;54;56;53;52;51;50;47;49;48;46;45;44;43;42;41;40;39;38;37;36;35;32;30。
S64=64;63;62;60;61;58;59;57;56;54;55;53;52;51;47;50;49;48;46;45;44;43;42;41;40;39;38;37;36;35;32;34。
S64=64;62;63;60;58;61;59;57;56;54;53;55;52;51;50;49;48;47;46;45;44;43;42;41;40;39;38;37;36;35;32;33。
S64=64;63;61;59;57;62;60;55;58;54;56;53;52;51;50;49;48;46;47;45;44;43;42;41;40;39;38;37;36;35;32;34。
S64=64;63;61;59;62;60;58;57;56;55;54;53;52;51;50;49;48;47;46;45;44;43;42;41;40;39;38;37;36;35;32;33。
S64=64;62;60;58;63;56;61;59;55;57;54;53;52;51;47;50;49;48;46;45;44;43;42;41;40;39;38;37;36;33;35;30。
S64=64;62;60;58;63;56;61;59;55;57;54;53;52;51;47;50;49;48;46;45;44;43;42;41;40;39;38;37;36;33;35;31。
S64=64;62;60;58;63;56;61;59;55;57;54;53;52;51;47;50;49;48;46;45;44;43;42;41;40;39;38;37;36;33;35;32。
S64=64;62;60;58;63;56;61;59;55;57;54;53;52;51;47;50;49;48;46;45;44;43;42;41;40;39;38;37;36;33;35;34。
S64=64;62;60;58;63;56;61;59;55;57;54;53;52;51;47;50;49;48;46;45;44;43;42;41;40;39;38;37;36;35;30;31。
S64=64;62;60;58;63;56;61;59;55;57;54;53;52;51;47;50;49;48;46;45;44;43;42;41;40;39;38;37;36;35;30;32。
S64=64;62;60;58;63;56;61;59;55;57;54;53;52;51;47;50;49;48;46;45;44;43;42;41;40;39;38;37;36;35;30;33。
S64=64;62;60;58;63;56;61;59;55;57;54;53;52;51;47;50;49;48;46;45;44;43;42;41;40;39;38;37;36;35;30;34。
S64=64;62;60;58;63;56;61;59;55;57;54;53;52;51;47;50;49;48;46;45;44;43;42;41;40;39;38;37;36;35;31;30。
S64=64;62;60;58;63;56;61;59;55;57;54;53;52;51;47;50;49;48;46;45;44;43;42;41;40;39;38;37;36;35;31;32。
S64=64;62;60;58;63;56;61;59;55;57;54;53;52;51;47;50;49;48;46;45;44;43;42;41;40;39;38;37;36;35;31;33。
S64=64;62;60;58;63;56;61;59;55;57;54;53;52;51;47;50;49;48;46;45;44;43;42;41;40;39;38;37;36;35;31;34。
S64=64;62;60;58;63;56;61;59;55;57;54;53;52;51;47;50;49;48;46;45;44;43;42;41;40;39;38;37;36;35;32;30。
S64=64;62;60;58;63;56;61;59;55;57;54;53;52;51;47;50;49;48;46;45;44;43;42;41;40;39;38;37;36;35;32;31。
S64=64;62;60;58;63;56;61;59;55;57;54;53;52;51;47;50;49;48;46;45;44;43;42;41;40;39;38;37;36;35;32;33。
S64=64;62;60;58;63;56;61;59;55;57;54;53;52;51;47;50;49;48;46;45;44;43;42;41;40;39;38;37;36;35;32;34。
若母码长为63,缩短序列可以是S64-1,也即上述任一个S64中元素减一的序列。例如,S63={64;62;60;58;63;56;61;59;55;57;54;53;52;51;47;50;49;48;46;45;44;43;42;41;40;39;38;37;36;35;32;34}-1=63;61;59;57;62;55;60;58;54;56;53;52;51;50;46;49;48;47;45;44;43;42;41;40;39;38;37;36;35;34;31;33。
若母码长为128,缩短序列可以是:S64=128;127;……;66;65(逆序序列)。
若母码长为127,缩短序列可以是S128-1,也即任一个S32中元素减一的序列。例如,S127={128;127;……;66;65}-1=127;126;……;65;64。
目前,码长和码率灵活是无线通信信道编码的重要或必要需求,现有方案无法满足。采用本申请的编码方法可以是得到的BCH码的码长和码率比较灵活,符合无线信道信道编码的需求。其中,基于生成多项式和生成矩阵的方式实现复杂度低。在本申请中速率匹配过程考虑了码距最大化,有益于最大似然译码性能的提升。通过本申请提供的编码方法的一个实施例(码率依赖的速率匹配,码率阈值Rthr=1/3)所生成的码与已知最优码距码的码距差别,例如图8所示码距性能示意图示出的,很多码长和码率的码距都已经达到了最优值。因此采用本申请的编码方法可以使提升码距性能。
进一步地,在OSD或者BMA译码下,本申请的编码方法得到的BCH码的性能好于现有的Polar码。例如图9所示,码率1/3,码长n=51,信息比特长度k=17的情况下,可以看出本申请得到的BCH码的码距14比NR PC-Polar码的码距8要高,也即本申请得到的BCH码比NRPC-Polar码的码距性能好。又例如图10所示,码率1/2,码长n=56,信息比特长度k=23的情况下,可以看出本申请得到的BCH码的码距12比NR PC-Polar码的码距8要高,也即本申请得到的BCH码比NR PC-Polar码的码距性能好。
基于上述实施例,本申请实施例提供了一种编码装置,参阅图11所示,所述编码装置1100包括第一处理单元1101和第二处理单元1102。所述编码装置1100用于实现上述图2所述的实施例中编码装置的功能。具体的:
所述第一处理单元1101用于根据第一BCH码确定第一编码参数;所述第一BCH码为待编码的BCH码;所述第一编码参数为第一码或为第一码的生成矩阵;所述第一码的码长为n,信息比特长度为k;所述n大于0,所述k大于0;所述第二处理单元1102用于基于所述第一编码参数进行BCH码编码。
在一种可选的实施方式中,所述第一处理单元1101根据第一BCH码确定第一编码参数时,具体用于:确定所述第一BCH码的生成矩阵;根据所述第一BCH码的生成矩阵和打孔序列,确定所述第一编码参数,所述打孔序列中包括的元素为所述第一BCH码的生成矩阵中的列号。
在一种可选的实施方式中,所述第一处理单元1101根据所述第一BCH码的生成矩阵和打孔序列,确定所述第一编码参数时,具体用于:取所述第一BCH码的生成矩阵的最后k行,得到第一矩阵;根据所述打孔序列,依次对所述第一矩阵中所述打孔序列中的元素对应的位置进行打孔,得到所述第一编码参数,所述第一编码参数为包括k行,n列的矩阵。
在一种可选的实施方式中,所述一码的码率k/n小于或者等于码率阈值。
在一种可选的实施方式中,所述第一处理单元1101根据第一BCH码确定第一编码参数时,具体用于:确定所述第一BCH码的生成矩阵;根据所述第一BCH码的生成矩阵和缩短序列,确定所述第一编码参数,所述缩短序列中包括的元素为所述第一BCH码的生成矩阵中的列号。
在一种可选的实施方式中,所述第一处理单元1101根据所述第一BCH码的生成矩阵和缩短序列,确定所述第一编码参数时,具体用于:根据所述缩短序列,依次在所述生成矩阵中对所述缩短序列中的元素对应的位置置零,得到第二矩阵;从所述第二矩阵最后一行开始选取,跳过所述缩短序列中的元素对应的位置存在1的行,直至选取到k行为止,得到所述第一编码参数,所述第一编码参数为包括k行,n列的矩阵。
在一种可选的实施方式中,所述一码的码率k/n大于或者等于码率阈值。
示例性的,所述码率阈值为1/4、1/2、3/4、1/3、2/3、1/8、3/8、5/8、7/8、1/16、3/16、5/16、7/16、9/16、11/16、13/16或15/16中的任意一个。
具体的,所述第一处理单元1101确定所述第一BCH码的生成矩阵时,具体用于:根据所述第一BCH码的生成多项式组确定所述第一BCH码的生成矩阵,所述第一BCH码的生成多项式组包括以下多项式:g1,g2,g3,……,gx,x为大于或者等于1的整数。
示例性的,所述第一处理单元1101根据所述第一BCH码的生成多项式组确定所述第一BCH码的生成矩阵时,具体用于:分别基于所述第一BCH码的生成多项式组中的每一个多项式对应的行向量以及根据所述行向量右移位得到的行向量,确定所述第一BCH码的生成矩阵;所述第一BCH码的生成矩阵每一行对应的行向量长度等于所述第一BCH码的母码码长,行数等于所述母码码长;其中,第1行为多项式g1对应的行向量,第2行、……、第k1-k2行分别为第一行对应的行向量右移1位、……、右移k1-k2-1位得到的行向量;……;第N-ki+1行为多项式gi对应的行向量,第N-ki+2行、……、第N-kj行为第N-ki+1行对应的行向量右移1位、……、右移ki-kj-1位得到的行向量;……;第N-kx+1行为多项式gx对应的行向量,第N-kx+2行为第N-kx+1行对应的行向量右移1位、……、右移kx-1位得到的行向量;其中,k1为g1对应的信息比特长度,k2为g2对应的信息比特长度,ki为gi对应的信息比特长度,kj为gj对应的信息比特长度,kx为gx对应的信息比特长度,j=i+1,N为所述母码码长。
一种示例中,所述第一编码参数为所述第一码时,所述第一处理单元1101根据第一BCH码确定第一编码参数时,具体用于:在所述第一BCH码的生成多项式组中确定目标多项式gi;根据所述gi确定第二码,所述第二码的码长为N,信息比特长度为ki,所述N为所述第一BCH码的母码码长,所述ki为所述gi对应的信息比特长度;根据所述第二码确定所述第一码;其中,所述gi是所述生成多项式组包括的多项式g1,g2,g3,……,gx中的一个,x为大于或者等于1的整数。
具体的,所述第一处理单元1101根据所述第二码确定所述第一码时,具体用于:对所述第二码缩短,得到第三码;当所述第三码的码率小于k/n时,对所述第三码打孔,得到所述第一码;当所述第三码的码率大于所述k/n时,对所述第三码增加冗余比特,得到所述第一码;所述第三码的信息比特长度为k。
示例性的,所述第一处理单元1101对所述第二码缩短,得到第三码时,具体用于:将所述第二码缩短ki-k个比特,得到第三码,所述第三码的码长为N+k-ki。
一种可能的实施方式中,所述gi对应的所述ki是所述多项式组中包含的多项式对应的信息比特长度中的第一信息比特长度,所述第一信息比特长度为小于N+k-n的最大值;所述第一处理单元1101对所述第三码打孔,得到所述第一码时,具体用于:对所述第三孔打孔至n个比特,得到所述第一码。
具体的,所述第一处理单元1101对所述第三孔打孔至n个比特,得到所述第一码时,具体用于:对所述第三码打孔N+k-ki-n个比特,得到所述第一码。
示例性的,所述第一处理单元1101对所述第三码打孔N+k-ki-n个比特时,具体用于:当所述第一BCH码为非系统码时,打孔所述第三码的前N+k-ki-n个比特;或者,打孔所述第三码的后N+k-ki-n个比特;或者,按照预设的打孔序列,打孔所述第三码中的N+k-ki-n个比特;当所述第一BCH码为系统码时,打孔所述第三码非系统位中的前N+k-ki-n个比特;或者,打孔所述第三码非系统位中的后N+k-ki-n个比特;或者,打孔所述第三码系统位中的前N+k-ki-n个比特;或者,打孔所述第三码系统位中的后N+k-ki-n个比特;或者,按照所述预设的所述打孔序列打孔所述第三码非系统位中的N+k-ki-n个比特;或者,按照所述打孔序列打孔所述第三码系统位中的N+k-ki-n个比特;或者,按照所述打孔序列打孔所述第三码中的N+k-ki-n个比特。
可选的,当所述第一BCH码为扩展BCH eBCH码时,所述第一处理单元1101还用于打孔所述eBCH码中的扩展比特,其中所述扩展比特为信息比特的奇偶校验比特。
另一种可能的实施方式中,所述gi对应的所述ki是所述多项式组中包含的多项式对应的信息比特长度中的第二信息比特长度,所述第二信息比特长度为大于N+k-n的最小值;所述第一处理单元1101对所述第三码增加冗余比特,得到所述第一码时,具体用于:对所述第三码增加冗余比特至n个比特,得到所述第一码。
一种示例,所述第一处理单元1101对所述第三码增加冗余比特至n个比特,得到所述第一码时,具体用于:对所述第三码增加n-N+k-ki个冗余比特,得到所述第一码。
具体的,所述第一处理单元1101对所述第三码增加n-N-k+ki个冗余比特时,具体用于:对所述第三码增加n-N-k+ki个奇偶校验比特;或者,增加所述第三码的n-N-k+ki个比特的重复比特;或者,对所述第三码增加A个奇偶校验比特和B个重复比特,A+B=n-N-k+ki。
示例性的,所述第一处理单元1101对所述第三码增加n-N-k+ki个奇偶校验比特时,具体用于:对所述第三码的k个信息比特生成奇偶校验和,得到一个奇偶校验比特;对所述k个信息比特中的k-d个信息比特生成就奇偶校验和,得到一个奇偶校验比特;直至得到n-N-k+ki个奇偶校验比特为止;其中,所述d为1,2,……k-1;或者,对所述第三码的k个信息比特进行单纯形码编码,得到n-N-k+ki个奇偶校验比特。
示例性的,当所述第一BCH码为非系统码时,所述第一处理单元1101增加所述第三码的n-N-k+ki个比特的重复比特时,具体用于:对所述第三码增加所述第三码的前n-N-k+ki个比特的重复比特;或者,对所述第三码增加所述第三码的后n-N-k+ki个比特的重复比特;或者,按照预设的序列,对所述第三码增加所述预设的序列对应的所述第三码中的n-N-k+ki个比特的重复比特。
示例性的,当所述第一BCH码为系统码时,所述第一处理单元1101增加所述第三码的n-N-k+ki个比特的重复比特时,具体用于:对所述第三码增加所述第三码的前n-N-k+ki个系统位比特的重复比特;或者,对所述第三码增加所述第三码的后n-N-k+ki个系统位比特的重复比特;或者,按照预设的序列,对所述第三码增加所述预设的序列对应的所述第三码中的n-N-k+ki个系统位比特的重复比特。
示例性的,所述第一处理单元1101对所述第三码增加A个奇偶校验比特和B个重复比特时,具体用于:对所述第三码增加所述A个奇偶校验比特后,增加所述B个重复比特;或者,对所述第三码增加所述B个重复比特后,增加所述A个奇偶校验比特;或者,对所述第三码增加的所述A个奇偶校验比特和所述B个重复比特中,任一个奇偶校验比特相邻的比特为重复比特,任一个重复比特的相邻比特为奇偶校验比特。
在一种可选的实施方式中,所述第一处理单元1101将所述第二码缩短ki-k个比特时,具体用于:当所述第一BCH码为非系统码时,缩短所述第二码的前ki-k个比特;或者,缩短所述第二码的后ki-k个比特;或者,按照预设的缩短序列缩短所述第二码的ki-k个比特;当所述第一BCH码为系统码时,缩短所述第二码系统位中的前ki-k个比特;或者,缩短所述第二码系统位中的后ki-k个比特;或者,按照所述缩短序列缩短所述第二码系统位中的ki-k个比特。
需要说明的是,本申请实施例中对单元的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。在本申请的实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(processor)执行本申请各个实施例方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(read-onlymemory,ROM)、随机存取存储器(random access memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
基于以上实施例,本申请实施例提供的一种编码装置还可以参阅图12所示,所述编码装置1200可以包括存储器1203和处理器1202。可选的,所述编码装置1200中还可以包括收发器1201。其中,所述处理器1202可以控制所述收发器1201接收和发送数据或信息等。
具体的,处理器1202可以是中央处理器(central processing unit,CPU),网络处理器(network processor,NP)或者CPU和NP的组合。处理器1202还可以进一步包括硬件芯片。上述硬件芯片可以是专用集成电路(application-specific integrated circuit,ASIC),可编程逻辑器件(programmable logic device,PLD)或其组合。上述PLD可以是复杂可编程逻辑器件(complex programmable logic device,CPLD),现场可编程逻辑门阵列(field-programmable gate array,FPGA),通用阵列逻辑(generic array logic,GAL)或其任意组合。
其中,收发器1201、处理器1202和存储器1203之间相互连接。可选的,收发器1201、处理器1202和存储器1203通过总线1204相互连接;总线1204可以是外设部件互连标准(Peripheral Component Interconnect,PCI)总线或扩展工业标准结构(ExtendedIndustry Standard Architecture,EISA)总线等。总线可以分为地址总线、数据总线、控制总线等。为便于表示,图12中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
在一种可选的实施方式中,存储器1203,用于存放程序等。具体地,程序可以包括程序代码,该程序代码包括计算机操作指令。存储器1203可能包括RAM,也可能还包括非易失性存储器(non-volatile memory),例如一个或多个磁盘存储器。处理器1202执行存储器1203所存放的应用程序,实现上述功能,从而实现编码装置1200的功能。
具体的,所述编码装置1200可以实现上述图2所示的实施例中编码装置的功能。具体的,所述处理器1202可以调用所述存储器1203中的程序以执行上述图2中的方法。具体的可以参见图2中方法描述,此处不再详细描述。
在一种可选的实施方式中,所述处理器1202可以包括构造器、编码器、译码器等等,由构造器、编码器、译码器等共同实现处理器的功能。
在一种可选的实施方式中,所述收发器1201可以发送编码后的比特,还可以从其他设备接收信息或数据等。
基于以上实施例,本申请实施例提供了一种通信系统,该通信系统可以包括上述实施例涉及的编码装置等。
本申请实施例还提供一种计算机可读存储介质,所述计算机可读存储介质用于存储计算机程序,该计算机程序被计算机执行时,所述计算机可以实现上述方法实施例提供的编码方法。
本申请实施例还提供一种计算机程序产品,所述计算机程序产品用于存储计算机程序,该计算机程序被计算机执行时,所述计算机可以实现上述方法实施例提供的编码方法。
本申请实施例还提供一种芯片,所述芯片与存储器耦合,所述芯片用于实现上述方法实施例提供的编码方法。
本申请实施例还提供了一种芯片系统,该芯片系统包括处理器,用于支持上述编码装置实现上述功能。在一种可能的设计中,所述芯片系统还包括存储器,所述存储器,用于保存编码装置必要的程序指令和数据。该芯片系统,可以由芯片构成,也可以包含芯片和其他分立器件。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的保护范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。

Claims (28)

1.一种编码方法,其特征在于,包括:
根据第一BCH码确定第一编码参数;所述第一BCH码为待编码的BCH码;所述第一编码参数为第一码或为第一码的生成矩阵;所述第一码的码长为n,信息比特长度为k;所述n大于0,所述k大于0;
基于所述第一编码参数进行BCH码编码。
2.如权利要求1所述的方法,其特征在于,所述第一编码参数为所述第一码时,根据第一BCH码确定第一编码参数,包括:
在所述第一BCH码的生成多项式组中确定目标多项式gi,其中,所述gi是所述生成多项式组包括的多项式g1,g2,g3,……,gx中的一个,x为大于或者等于1的整数;
根据所述gi确定第二码,所述第二码的码长为N,信息比特长度为ki,所述N为所述第一BCH码的母码码长,所述ki为所述gi对应的信息比特长度;
根据所述第二码确定所述第一码。
3.如权利要求2所述的方法,其特征在于,根据所述第二码确定所述第一码,包括:
对所述第二码缩短,得到第三码;
当所述第三码的码率小于k/n时,对所述第三码打孔,得到所述第一码;
当所述第三码的码率大于所述k/n时,对所述第三码增加冗余比特,得到所述第一码;
所述第三码的信息比特长度为k。
4.如权利要求3所述的方法,其特征在于,对所述第二码缩短,得到第三码,包括:
将所述第二码缩短ki-k个比特,得到第三码,所述第三码的码长为N+k-ki。
5.如权利要求3或4所述的方法,其特征在于,所述gi对应的所述ki是所述多项式组中包含的多项式对应的信息比特长度中的第一信息比特长度,所述第一信息比特长度为小于N+k-n的最大值;
对所述第三码打孔,得到所述第一码,包括:
对所述第三孔打孔至n个比特,得到所述第一码。
6.如权利要求5所述的方法,其特征在于,对所述第三孔打孔至n个比特,得到所述第一码,包括:
对所述第三码打孔N+k-ki-n个比特,得到所述第一码。
7.如权利要求6所述的方法,其特征在于,对所述第三码打孔N+k-ki-n个比特,包括:
当所述第一BCH码为非系统码时,打孔所述第三码的前N+k-ki-n个比特;或者,打孔所述第三码的后N+k-ki-n个比特;或者,按照预设的打孔序列,打孔所述第三码中的N+k-ki-n个比特;
当所述第一BCH码为系统码时,打孔所述第三码非系统位中的前N+k-ki-n个比特;或者,打孔所述第三码非系统位中的后N+k-ki-n个比特;或者,打孔所述第三码系统位中的前N+k-ki-n个比特;或者,打孔所述第三码系统位中的后N+k-ki-n个比特;或者,按照所述预设的所述打孔序列打孔所述第三码非系统位中的N+k-ki-n个比特;或者,按照所述打孔序列打孔所述第三码系统位中的N+k-ki-n个比特;或者,按照所述打孔序列打孔所述第三码中的N+k-ki-n个比特。
8.如权利要求7所述的方法,其特征在于,当所述第一BCH码为扩展BCH eBCH码时,所述方法还包括:
打孔所述eBCH码中的扩展比特,其中所述扩展比特为信息比特的奇偶校验比特。
9.如权利要求3或4所述的方法,其特征在于,所述gi对应的所述ki是所述多项式组中包含的多项式对应的信息比特长度中的第二信息比特长度,所述第二信息比特长度为大于N+k-n的最小值;
对所述第三码增加冗余比特,得到所述第一码,包括:
对所述第三码增加冗余比特至n个比特,得到所述第一码。
10.如权利要求9所述的方法,其特征在于,对所述第三码增加冗余比特至n个比特,得到所述第一码,包括:
对所述第三码增加n-N+k-ki个冗余比特,得到所述第一码。
11.如权利要求10所述的方法,其特征在于,对所述第三码增加n-N-k+ki个冗余比特,包括:
对所述第三码增加n-N-k+ki个奇偶校验比特;或者
增加所述第三码的n-N-k+ki个比特的重复比特;或者
对所述第三码增加A个奇偶校验比特和B个重复比特,A+B=n-N-k+ki。
12.如权利要求11所述的方法,其特征在于,对所述第三码增加n-N-k+ki个奇偶校验比特,包括:
对所述第三码的k个信息比特生成奇偶校验和,得到一个奇偶校验比特;对所述k个信息比特中的k-d个信息比特生成就奇偶校验和,得到一个奇偶校验比特;直至得到n-N-k+ki个奇偶校验比特为止;其中,所述d为1,2,……k-1;或者
对所述第三码的k个信息比特进行单纯形码编码,得到n-N-k+ki个奇偶校验比特。
13.如权利要求11所述的方法,其特征在于,当所述第一BCH码为非系统码时,增加所述第三码的n-N-k+ki个比特的重复比特,包括:
对所述第三码增加所述第三码的前n-N-k+ki个比特的重复比特;或者
对所述第三码增加所述第三码的后n-N-k+ki个比特的重复比特;或者
按照预设的序列,对所述第三码增加所述预设的序列对应的所述第三码中的n-N-k+ki个比特的重复比特。
14.如权利要求11所述的方法,其特征在于,当所述第一BCH码为系统码时,增加所述第三码的n-N-k+ki个比特的重复比特,包括:
对所述第三码增加所述第三码的前n-N-k+ki个系统位比特的重复比特;或者
对所述第三码增加所述第三码的后n-N-k+ki个系统位比特的重复比特;或者
按照预设的序列,对所述第三码增加所述预设的序列对应的所述第三码中的n-N-k+ki个系统位比特的重复比特。
15.如权利要求11所述的方法,其特征在于,对所述第三码增加A个奇偶校验比特和B个重复比特,包括:
对所述第三码增加所述A个奇偶校验比特后,增加所述B个重复比特;或者
对所述第三码增加所述B个重复比特后,增加所述A个奇偶校验比特;或者
对所述第三码增加的所述A个奇偶校验比特和所述B个重复比特中,任一个奇偶校验比特相邻的比特为重复比特,任一个重复比特的相邻比特为奇偶校验比特。
16.如权利要求4-15任一项所述的方法,其特征在于,将所述第二码缩短ki-k个比特,包括:
当所述第一BCH码为非系统码时,缩短所述第二码的前ki-k个比特;或者,缩短所述第二码的后ki-k个比特;或者,按照预设的缩短序列缩短所述第二码的ki-k个比特;
当所述第一BCH码为系统码时,缩短所述第二码系统位中的前ki-k个比特;或者,缩短所述第二码系统位中的后ki-k个比特;或者,按照所述缩短序列缩短所述第二码系统位中的ki-k个比特。
17.如权利要求1所述的方法,其特征在于,根据第一BCH码确定第一编码参数,包括:
确定所述第一BCH码的生成矩阵;
根据所述第一BCH码的生成矩阵和打孔序列,确定所述第一编码参数,所述打孔序列中包括的元素为所述第一BCH码的生成矩阵中的列号。
18.如权利要求17所述的方法,其特征在于,根据所述第一BCH码的生成矩阵和打孔序列,确定所述第一编码参数,包括:
取所述第一BCH码的生成矩阵的最后k行,得到第一矩阵;
根据所述打孔序列,依次对所述第一矩阵中所述打孔序列中的元素对应的位置进行打孔,得到所述第一编码参数,所述第一编码参数为包括k行,n列的矩阵。
19.如权利要求17或18所述的方法,其特征在于,所述第一码的码率k/n小于或者等于码率阈值。
20.如权利要求1所述的方法,其特征在于,根据第一BCH码确定第一编码参数,包括:
确定所述第一BCH码的生成矩阵;
根据所述第一BCH码的生成矩阵和缩短序列,确定所述第一编码参数,所述缩短序列中包括的元素为所述第一BCH码的生成矩阵中的列号。
21.如权利要求20所述的方法,其特征在于,根据所述第一BCH码的生成矩阵和缩短序列,确定所述第一编码参数,包括:
根据所述缩短序列,依次在所述生成矩阵中对所述缩短序列中的元素对应的位置置零,得到第二矩阵;
从所述第二矩阵最后一行开始选取,跳过所述缩短序列中的元素对应的位置存在1的行,直至选取到k行为止,得到所述第一编码参数,所述第一编码参数为包括k行,n列的矩阵。
22.如权利要求20或21所述的方法,其特征在于,所述第一码的码率k/n大于或者等于码率阈值。
23.如权利要求19或22所述的方法,其特征在于,所述码率阈值为1/4、1/2、3/4、1/3、2/3、1/8、3/8、5/8、7/8、1/16、3/16、5/16、7/16、9/16、11/16、13/16或15/16中的任意一个。
24.如权利要求17-23任一项所述的方法,其特征在于,确定所述第一BCH码的生成矩阵,包括:
根据所述第一BCH码的生成多项式组确定所述第一BCH码的生成矩阵,所述第一BCH码的生成多项式组包括以下多项式:g1,g2,g3,……,gx,x为大于或者等于1的整数。
25.如权利要求24所述的方法,其特征在于,根据所述第一BCH码的生成多项式组确定所述第一BCH码的生成矩阵,包括:
分别基于所述第一BCH码的生成多项式组中的每一个多项式对应的行向量以及根据所述行向量右移位得到的行向量,确定所述第一BCH码的生成矩阵;所述第一BCH码的生成矩阵每一行对应的行向量长度等于所述第一BCH码的母码码长,行数等于所述母码码长;
其中,第1行为多项式g1对应的行向量,第2行、……、第k1-k2行分别为第一行对应的行向量右移1位、……、右移k1-k2-1位得到的行向量;……;第N-ki+1行为多项式gi对应的行向量,第N-ki+2行、……、第N-kj行为第N-ki+1行对应的行向量右移1位、……、右移ki-kj-1位得到的行向量;……;第N-kx+1行为多项式gx对应的行向量,第N-kx+2行为第N-kx+1行对应的行向量右移1位、……、右移kx-1位得到的行向量;
其中,k1为g1对应的信息比特长度,k2为g2对应的信息比特长度,ki为gi对应的信息比特长度,kj为gj对应的信息比特长度,kx为gx对应的信息比特长度,j=i+1,N为所述母码码长。
26.一种编码装置,其特征在于,包括用于执行如权利要求1-25任一项所述的方法的单元或模块。
27.一种编码装置,其特征在于,包括存储器和处理器,其中:
所述存储器存储有程序指令;
所述处理器,用于调用所述存储器中的所述程序指令并执行,使得所述编码装置执行如权利要求1-25任一项所述的方法。
28.一种计算机可读存储介质,其特征在于,包括指令,当所述指令在计算机上运行时,使得计算机行如权利要求1-25中任一项所述的方法。
CN202010903282.1A 2020-09-01 2020-09-01 一种编码方法及装置 Pending CN114124111A (zh)

Priority Applications (3)

Application Number Priority Date Filing Date Title
CN202010903282.1A CN114124111A (zh) 2020-09-01 2020-09-01 一种编码方法及装置
PCT/CN2021/112747 WO2022048431A1 (zh) 2020-09-01 2021-08-16 一种编码方法及装置
US18/176,217 US20230308117A1 (en) 2020-09-01 2023-02-28 Encoding Method and Apparatus

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010903282.1A CN114124111A (zh) 2020-09-01 2020-09-01 一种编码方法及装置

Publications (1)

Publication Number Publication Date
CN114124111A true CN114124111A (zh) 2022-03-01

Family

ID=80360688

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010903282.1A Pending CN114124111A (zh) 2020-09-01 2020-09-01 一种编码方法及装置

Country Status (3)

Country Link
US (1) US20230308117A1 (zh)
CN (1) CN114124111A (zh)
WO (1) WO2022048431A1 (zh)

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2008021930A2 (en) * 2006-08-11 2008-02-21 Distribution Control Systems Method of correcting message errors using cyclic redundancy checks
CA2818126C (en) * 2010-12-03 2018-06-19 Samsung Electronics Co., Ltd. Apparatus and method for transmitting and receiving data in communication system
US9203434B1 (en) * 2012-03-09 2015-12-01 Western Digital Technologies, Inc. Systems and methods for improved encoding of data in data storage devices
US8745472B2 (en) * 2012-09-01 2014-06-03 Texas Instruments Incorporated Memory with segmented error correction codes
CN103618584A (zh) * 2013-04-28 2014-03-05 张涛 电力线通信信道编译码方法及系统
US9203435B2 (en) * 2013-05-08 2015-12-01 Broadcom Corporation Multiple size and rate FEC code combination with minimum shortening and maximum combined code rate
CN104426630B (zh) * 2013-08-30 2018-04-03 中国科学院上海高等研究院 一种比特交织编码调制方法及系统
CN105429646B (zh) * 2015-06-30 2019-03-22 南京大学 一种咬尾阶梯码的编码及解码方法
CN106603085B (zh) * 2016-11-21 2020-04-14 建荣半导体(深圳)有限公司 生成多项式的生成方法、生成装置、编码器、控制器及电子设备
CN110890894A (zh) * 2018-09-07 2020-03-17 华为技术有限公司 级联编码的方法和装置

Also Published As

Publication number Publication date
US20230308117A1 (en) 2023-09-28
WO2022048431A1 (zh) 2022-03-10

Similar Documents

Publication Publication Date Title
KR102114259B1 (ko) 분극화 코딩에서 사용하기 위한 방법, 디바이스, 및 장비
US10523368B2 (en) Polar code processing method and communications device
CN106877973B (zh) 极化码处理的方法及通信设备
EP3598674A1 (en) Encoding method, decoding method, apparatus and device
US10892849B2 (en) Polar code coding method and apparatus
US20190349128A1 (en) Data transmission method and apparatus
JP7216011B2 (ja) ポーラーコードレートマッチング方法および装置
EP3547579A1 (en) Coding method and device
US20200186168A1 (en) Method and device for determining check matrix, and computer storage medium
US11121724B2 (en) Data processing method and device
WO2018103556A1 (zh) 准循环ldpc码数据处理装置及处理方法
US11057052B2 (en) Data processing method and apparatus to restore mother code sequences with different code lengths by using an indication sequence and a basic sequence
CN114124111A (zh) 一种编码方法及装置
EP3567767A1 (en) Data processing method and device
EP3734873B1 (en) Channel encoding method and encoding device
CN108111174B (zh) 一种ldpc码发送方法、接收方法及装置
EP4250610A1 (en) Method and device for determining polar code assistant bits
CN117394950A (zh) 编码方法、装置及存储介质
CN114126053A (zh) 一种数据传输方法以及装置

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