KR20160035882A - 나머지를 연산하는 장치 및 그 방법 - Google Patents

나머지를 연산하는 장치 및 그 방법 Download PDF

Info

Publication number
KR20160035882A
KR20160035882A KR1020140127788A KR20140127788A KR20160035882A KR 20160035882 A KR20160035882 A KR 20160035882A KR 1020140127788 A KR1020140127788 A KR 1020140127788A KR 20140127788 A KR20140127788 A KR 20140127788A KR 20160035882 A KR20160035882 A KR 20160035882A
Authority
KR
South Korea
Prior art keywords
integer
result
binary number
dividing
binary
Prior art date
Application number
KR1020140127788A
Other languages
English (en)
Inventor
정석원
Original Assignee
(주)셀로직
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 (주)셀로직 filed Critical (주)셀로직
Priority to KR1020140127788A priority Critical patent/KR20160035882A/ko
Priority to PCT/KR2014/010326 priority patent/WO2016047848A1/ko
Publication of KR20160035882A publication Critical patent/KR20160035882A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computational Mathematics (AREA)
  • Computing Systems (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Complex Calculations (AREA)

Abstract

본 발명은 나머지를 연산하는 장치에 관한 것으로, 두 정수의 뺄셈 결과를 소수(Prime number)로 나눈 나머지를 연산하는 장치에 있어서, 제1정수와 제2정수를 입력받아 각각 n비트의 제1이진수와 제2이진수로 변환하는 제1변환부, 제2변환부, 제2이진수를 보수 처리한 이진수와 제1이진수 및 1을 합산하는 제1덧셈부, 제2이진수와 소수에 대응하여 결정되는 기준정수를 합산하는 제2덧셈부, 제2덧셈부의 합산 결과를 보수 처리한 이진수와 제1이진수 및 1을 합산하는 제3덧셈부 및 제1정수와 제2정수의 대소에 기초하여 제1덧셈부의 합산 결과 또는 제3덧셈부의 합산 결과 중 하나를 선택하되, 제1정수가 제2정수 이상이면 제1덧셈부의 합산 결과에 포함된 n비트의 이진수를, 제1정수와 제2정수의 뺄셈 결과를 소수로 나눈 나머지로 결정하는 제어부를 포함한다.

Description

나머지를 연산하는 장치 및 그 방법{APPARATUS FOR CALCULATING REMAINDER AND METHOD THEREOF}
본 발명은 나머지를 연산하는 장치 및 그 방법에 관한 것으로서, 더욱 상세하게는 임의의 두 정수의 뺄셈 결과를 소수(Prime number)로 나눈 나머지를 하드웨어 상으로 간단하게 구현하기 위한, 나머지를 연산하는 장치 및 그 방법에 관한 것이다.
기존의 산술 논리 연산 장치(ALU)는 가산기(Adder)를 기반으로 덧셈 연산 뿐만 아니라, 뺄셈 연산 등의 다양한 산술 연산과 논리합, 논리곱 등의 다양한 논리 연산을 수행하고 있다.
그 중에서, 나눗셈 연산은 곱셈의 역산으로 어떤 수를 다른 수로 나누는 셈을 의미하며, 제법 또는 제산이라고도 한다. 이 때, 나누어지는 수를 피제수, 나누는 수를 제수, 답을 몫, 나누어 떨어지지 않고 남은 수를 나머지(Remainder)라고 한다.
나눗셈은 피제수를 제수가 나타내는 수로 등분하는 등분제와, 피제수 속에 제수가 얼마나 포함되어 있는지를 나타내는 포함제로 구분된다.
나눗셈에서 분배법칙은 성립하지 않으나 일반적으로 a÷b÷c=a÷c÷b=a÷(b×c)는 성립하고, a÷b=(a×c)÷(b×c)=(a÷c)÷(b÷c)도 성립한다.
또한, 피제수 및 제수에 0이 있을 때 0÷a=0(a≠0)이며, 0÷0의 몫은 부정, a÷0은 불능이 된다.
본 발명과 관련된 선행기술로는 대한민국 공개특허공보 10-1997-0059919 호(1997.08.12.공개, 발명의 명칭 : 나머지 계산방법 및 회로)가 있다.
소수(Prime number)는 1과 자기 자신만으로 나누어 떨어지는 1보다 큰 양의 정수를 의미하고, 2, 3, 5, 7, 11, 13, 17, 19 등이 이에 해당한다.
이 때, 소수보다 작은 값을 갖는 임의의 두 정수에 대해서, 두 정수의 뺄셈 결과를 소수로 나눈 나머지를 연산할 때 두 정수의 뺄셈 결과는 0이상인 경우와 0보다 작은 경우에 연산 과정은 서로 상이하다.
따라서, 종래에는 임의의 두 정수의 뺄셈 결과를 소수로 나눈 나머지를 연산할 때, 임의의 두 정수의 대소 관계를 먼저 판단하고 그 판단 결과에 따라서 서로 다른 방식으로 나머지를 연산하고 있었다.
이와 같이 종래에는 임의의 두 정수를 먼저 빼고 그 결과에 따라서 어떠한 방식으로 나머지를 연산할 것인지 결정하는 과정이 우선 수행되어야 했기 때문에, 연산 결과가 도출되는 시간이 오래 걸렸고 이를 단축할 필요성이 있었다.
본 발명은 전술한 필요성에 따라 창안된 것으로서, 임의의 두 정수의 뺄셈 결과를 소수(Prime number)로 나눈 나머지를 하드웨어 상으로 간단하게 구현하기 위한, 나머지를 연산하는 장치 및 그 방법을 제공하는데 그 목적이 있다.
본 발명의 일 측면에 따른 나머지를 연산하는 장치는 두 정수의 뺄셈 결과를 소수(Prime number)로 나눈 나머지를 연산하는 장치에 있어서, 제1정수와 제2정수를 입력받아 각각 n비트의 제1이진수와 제2이진수로 변환하는 제1변환부, 제2변환부; 상기 제2이진수를 보수 처리한 이진수와 상기 제1이진수 및 1을 합산하는 제1덧셈부; 상기 제2이진수와 상기 소수에 대응하여 결정되는 기준정수를 합산하는 제2덧셈부; 상기 제2덧셈부의 합산 결과를 보수 처리한 이진수와 상기 제1이진수 및 1을 합산하는 제3덧셈부; 및 상기 제1정수와 제2정수의 대소에 기초하여 상기 제1덧셈부의 합산 결과 또는 상기 제3덧셈부의 합산 결과 중 하나를 선택하되, 상기 제1정수가 상기 제2정수 이상이면 상기 제1덧셈부의 합산 결과에 포함된 n비트의 이진수를, 상기 제1정수와 제2정수의 뺄셈 결과를 소수로 나눈 나머지로 결정하는 제어부를 포함한다.
본 발명은 상기 제2이진수를 보수 처리하는 제1보수 처리부와 상기 제2덧셈부의 합산 결과를 보수 처리하는 제2보수 처리부를 더 포함하는 것을 특징으로 한다.
본 발명에서 상기 기준정수는 상기 소수를 2n - t로 표현했을 때 t로 설정되는 것을 특징으로 한다.
본 발명에서 상기 제어부는 상기 제1정수가 상기 제2정수 미만이면 상기 제3덧셈부의 합산 결과에 포함된 n비트의 이진수를 상기 제1정수와 제2정수의 차를 소수로 나눈 나머지로 결정하는 것을 특징으로 한다.
본 발명에서 상기 제어부는 상기 제1덧셈부의 합산 결과에 포함된 (n+1)번째 비트가 1이면 상기 제1정수가 상기 제2정수 이상인 것으로 판단하고, 상기 합산 결과에 포함된 (n+1)번째 비트가 0이면 상기 제1정수가 상기 제2정수 미만인 것으로 판단하는 것을 특징으로 한다.
본 발명은 상기 제어부에 의해 상기 제1정수와 제2정수의 차를 소수로 나눈 나머지로 결정되는 이진수를 십진수로 변환하는 제3변환부; 및 상기 제3변환부에서 변환되는 십진수를 출력하는 출력부를 더 포함하는 것을 특징으로 한다.
본 발명의 일 측면에 따른 나머지를 연산하는 방법은 두 정수의 뺄셈 결과를 소수(Prime number)로 나눈 나머지를 연산하는 방법에 있어서, 제1변환부와 제2변환부가 제1정수와 제2정수를 입력받아 각각 n비트의 제1이진수와 제2이진수로 변환하는 단계; 제1덧셈부가 상기 제2이진수를 보수 처리한 이진수와 상기 제1이진수 및 1을 합산하는 단계; 제2덧셈부가 상기 제2이진수와 상기 소수에 대응하여 결정되는 기준정수를 합산하는 단계; 제3덧셈부가 상기 제2덧셈부의 합산 결과를 보수 처리한 이진수와 상기 제1이진수 및 1을 합산하는 단계; 및 제어부가 상기 제1정수와 제2정수의 대소에 기초하여 상기 제1정수와 제2정수의 뺄셈 결과를 소수로 나눈 결과를 결정하는 단계를 포함하되, 상기 제어부는 상기 제1정수가 상기 제2정수 이상이면 상기 제1덧셈부의 합산 결과에 포함된 n비트의 이진수를, 상기 제1정수와 제2정수의 뺄셈 결과를 소수로 나눈 나머지로 결정하는 것을 특징으로 한다.
본 발명의 상기 제1정수와 제2정수의 차를 소수로 나눈 결과를 결정하는 단계에서, 상기 제어부는 상기 제1정수가 상기 제2정수 미만이면 상기 제3덧셈부의 합산 결과에 포함된 n비트의 이진수를 상기 제1정수와 제2정수의 차를 소수로 나눈 나머지로 결정하는 것을 특징으로 한다.
본 발명의 상기 제2이진수와 상기 소수에 대응하여 결정되는 기준정수를 합산하는 단계에서, 상기 기준정수는 상기 소수를 2n - t로 표현했을 때 t로 설정되는 것을 특징으로 한다.
본 발명의 상기 제1정수와 제2정수의 뺄셈 결과를 소수로 나눈 나머지를 결정하는 단계에서, 상기 제어부는 상기 제1덧셈부의 합산 결과에 포함된 (n+1)번째 비트가 1이면 상기 제1정수가 상기 제2정수 이상인 것으로 판단하고, 상기 합산 결과에 포함된 (n+1)번째 비트가 0이면 상기 제1정수가 상기 제2정수 미만인 것으로 판단하는 것을 특징으로 한다.
본 발명은 상기 제1정수와 제2정수의 뺄셈 결과를 소수로 나눈 나머지를 결정한 이후에, 제3변환부가 상기 제1정수와 제2정수의 뺄셈 결과를 소수로 나눈 나머지로 결정되는 이진수를 십진수로 변환하는 단계; 및 출력부가 상기 변환되는 십진수를 출력하는 단계를 더 포함하는 것을 특징으로 한다.
본 발명에 따르면, 두 정수의 대소 관계와 무관하게 복수의 덧셈부를 통해서 두 정수의 뺄셈 결과를 소수로 나눈 나머지를 연산하고, 나중에 두 정수의 대소 관계에 따라 두 정수의 뺄셈 결과를 소수로 나눈 나머지를 결정함으로써 보다 빠르게 나머지를 연산할 수 있다.
또한 본 발명은 합산 결과에 포함된 최상위 비트를 확인하는 방식으로 간단하게 두 정수의 대소 관계를 판단할 수 있다.
도 1은 본 발명의 일 실시예에 따른 나머지를 연산하는 장치의 블록 구성도이다.
도 2는 본 발명의 일 실시예에 따른 나머지를 연산하는 방법의 구현 과정을 설명하는 절차 흐름도이다.
이하에서는 본 발명의 일 실시예에 따른 나머지를 연산하는 장치 및 그 방법을 첨부된 도면들을 참조하여 상세하게 설명한다. 이 과정에서 도면에 도시된 선들의 두께나 구성요소의 크기 등은 설명의 명료성과 편의상 과장되게 도시되어 있을 수 있다. 또한, 후술되는 용어들은 본 발명에서의 기능을 고려하여 정의된 용어들로서 이는 사용자, 운용자의 의도 또는 관례에 따라 달라질 수 있다. 그러므로, 이러한 용어들에 대한 정의는 본 명세서 전반에 걸친 내용을 토대로 내려져야 할 것이다.
도 1은 본 발명의 일 실시예에 따른 나머지를 연산하는 장치의 블록 구성도이다.
도 1을 참조하면 본 발명의 일 실시예에 따른 나머지를 연산하는 장치는 제1변환부(10), 제2변환부(20), 제1덧셈부(40), 제2덧셈부(50), 제3덧셈부(60) 및 제어부(70)를 포함한다.
구체적으로 본 실시예에서는 두 정수(U, V)의 뺄셈 결과를 소수(Prime number)로 나눈 나머지를 연산하되, 소수와 두 정수의 관계는 아래의 수학식 1과 같다.
Figure pat00001
즉, 본 실시예에서는 각각 소수보다 작은 두 정수의 뺄셈 결과를 소수로 나눈 나머지를 간편하게 연산하기 위해서, 제1변환부(10)와 제2변환부(20)는 제1정수와 제2정수를 입력받아 각각 n비트의 제1이진수와 제2이진수로 변환한다.
본 실시예에서 n비트라는 의미는 n개의 비트로 이루어진 비트 집합을 의미하는 것으로, 첫번째 비트에서 n번째 비트까지 포함하고, 첫번째 비트는 20에 대응하고 n번째 비트는 2n-1에 대응하는 것으로 정의하기로 한다.
또한, 제1정수와 제2정수, 또는 제1이진수와 제2이진수는 입력되는 순서 등에 따라 자유롭게 결정되는 값으로 1이나 2는 단순히 두 정수를 구별하기 위한 식별자라고 할 수 있다.
이하에서는 제1정수에서 제2정수를 뺀 수를 소수로 나눈 나머지를 연산하는 경우를 예로 설명하기로 한다.
소수는 1과 자기 자신만으로 나누어 떨어지는 1보다 큰 양의 정수이기 때문에 2n - t와 같은 형태로 나타낼 수 있고, 소수에 따라서 n과 t는 다른 값으로 결정된다.
그리고, 전술한 바와 같이 제1정수와 제2정수는 소수보다 작은 정수로 가정하였기 때문에, 제1변환부(10)와 제2변환부(20)에서 변환하는 제1이진수와 제2이진수의 비트는 소수의 비트수(n+1)에 해당하는 비트보다 한 비트가 작으므로 n비트의 값을 갖는다.
제1덧셈부(40)는 제2이진수를 보수 처리한 이진수와 제1이진수 및 1을 합산하고, 제2덧셈부(50)는 제2이진수와 소수에 대응하여 결정되는 기준정수를 합산하며, 제3덧셈부(60)는 제2덧셈부(50)의 합산 결과를 보수 처리한 이진수와 제1이진수 및 1을 합산한다.
이 때, 보수 처리한다는 것은 n비트로 표현된 이진수의 각 비트의 0 또는 1을 반전시키는 것을 의미한다.
어떤 수를 나누었을 때 나머지를 연산하는 과정은 나누어지는 수인 피제수가 양수인지 음수인지에 따라 달라지므로, 피제수가 양의 정수인 경우와 음의 정수인 경우를 나누어서 검토하기로 한다.
먼저 제1정수가 제2정수 이상, 즉 피제수가 양의 정수인 경우에, 아래의 수학식 2와 같은 관계가 성립한다.
Figure pat00002
따라서 "2n + 제1정수 - 제2정수"를 피제수로 하여 소수로 나눈 나머지를 연산하고, 연산 후에 2n을 제거하여도 동일한 나머지 결과를 얻을 수 있다.
이 때, 본 실시예에서는 이진수 형태로 나머지를 연산하기 때문에 2n을 제거한다는 것은 (n+1)번째 비트를 무시하고, 첫번째 비트부터 n번째 비트까지의 값을 이용한다는 의미가 된다.
그리고 전술한 "2n + 제1정수 - 제2정수"는 아래의 수학식 3과 같이 나타낼 수 있다.
Figure pat00003
이 때, "~제2정수"는 제2정수가 변환된 제2이진수를 보수 처리하는 것을 의미한다.
수학식 3에 나타난 바와 같이 제1정수가 제2정수 이상인 경우에, 제1정수와 제2정수의 뺄셈 결과를 소수로 나눈 나머지는 제2이진수를 보수 처리한 이진수와 제1이진수 및 1을 합산하는 형식으로 연산됨을 확인할 수 있다.
따라서, 본 실시예에서 제1덧셈부(40)는 제2이진수를 보수 처리한 이진수와 제1이진수 및 1을 합산하여 후술하는 제어부(70)로 전달하고, 제어부(70)는 제1정수가 제2정수 이상인 경우에 제1덧셈부(40)의 합산 결과를 제1정수와 제2정수의 뺄셈 결과를 소수로 나눈 나머지로 판단할 수 있다.
다음으로, 제1정수가 제2정수 미만, 즉 피제수가 음의 정수인 경우에, 제1정수와 제2정수의 차를 소수로 나눈 나머지는 "소수 + 제1정수 - 제2정수"가 된다.
그리고 이를 변경하면 아래의 수학식 4와 같이 나타낼 수 있다.
Figure pat00004
즉, 제1정수가 제2정수 미만인 경우에 제1정수와 제2정수의 뺄셈 결과를 소수로 나눈 나머지는 제2이진수와 t를 합산한 결과를 보수 처리한 이진수와 제1이진수 및 1을 합산하는 형식으로 연산됨을 확인할 수 있다.
따라서, 본 실시예에서 제2덧셈부(50)는 먼저 제2이진수와 소수에 대응하여 결정되는 t를 합산하고, 제3덧셈부(60)는 제2덧셈부(50)의 합산 결과를 보수 처리한 이진수와 제1이진수 및 1을 합산하여 제어부(70)로 전달하고, 제어부(70)는 제1정수가 제2정수 미만인 경우에 제3덧셈부(60)의 합산 결과를 제1정수와 제2정수의 뺄셈 결과를 소수로 나눈 나머지로 판단할 수 있다.
전술한 바와 같이, 본 실시예에서는 제1정수와 제2정수의 뺄셈 결과를 소수로 나눈 나머지를 병렬로 위치하는 별개의 덧셈부(40 내지 60)를 통해서 연산하기 때문에, 제1정수와 제2정수의 대소 관계만을 알 수 있으면 그에 해당하는 합산 결과가 제1정수와 제2정수의 뺄셈 결과를 소수로 나눈 나머지인 것으로 결정하여 출력할 수 있다.
그리고, 전술한 바와 같이 제1정수가 제2정수 이상인 경우에는 2n을 합산하였기 때문에, 제1덧셈부(40)의 합산 결과는 (n+1)번째 비트가 1로 나타난다.
따라서 본 실시예에서 제어부(70)는 제1덧셈부(40)의 합산 결과에 포함된 (n+1)번째 비트가 1이면 제1정수가 제2정수 이상인 것으로 판단하고, (n+1)번째 비트가 0이면 제1정수가 제2정수 미만인 것으로 판단할 수 있다.
즉, 본 실시예에서는 별도의 복잡한 연산 과정없이, 제1덧셈부(40)의 합산 결과에 포함된 비트를 확인하여 간단하게 제1정수와 제2정수의 대소를 판단할 수 있기 때문에 빠르게 제1정수와 제2정수의 뺄셈 결과를 소수로 나눈 나머지를 연산할 수 있다.
그리고, 제1정수가 제2정수 이상인 것으로 판단되면 제1덧셈부(40)의 합산 결과에 포함된 n비트의 이진수를, 제1정수와 제2정수의 뺄셈 결과를 소수로 나눈 나머지로 결정할 수 있다.
반면, 제1정수가 제2정수 미만인 것으로 판단되면 제3덧셈부(60)의 합산 결과에 포함된 n비트의 이진수를 제1정수와 제2정수의 뺄셈 결과를 소수로 나눈 나머지로 결정할 수 있다.
본 실시예에서는 전술한 제2이진수의 보수 처리와, 제2덧셈부(50)의 합산 결과의 보수 처리를 수행하기 위한 복수의 보수 처리부(90, 100)를 포함할 수 있다.
구체적으로 제1보수 처리부(90)는 제2이진수를 보수 처리하고, 제2보수 처리부(100)는 제2덧셈부(50)의 합산 결과를 보수 처리한다.
특히, 본 실시예에 따른 제1보수 처리부(90) 및 제2보수 처리부(100)는 도 1에 도시된 바와 같이 인버터로 구성될 수 있으나 이에 한정되는 것은 아니므로 이진수를 보수 처리할 수 있는 어떠한 구성이든 포함할 수 있을 것이다.
또한 본 실시예에서는 이진수를 십진수로 변환하는 제3변환부(30) 및 연산 결과를 출력하는 출력부(80)를 더 포함할 수 있다.
즉, 제3변환부(30)는 제어부(70)에서 결정된 제1정수와 제2정수의 뺄셈 결과를 소수로 나눈 나머지를 사용자가 직관적으로 인식할 수 있는 십진수로 변환하고, 출력부(80)는 제3변환부(30)에서 변환되는 십진수를 출력한다.
도 2는 본 발명의 일 실시예에 따른 나머지를 연산하는 방법의 구현 과정을 설명하는 절차 흐름도이다.
도 2를 참조하여 본 발명의 일 실시예에 따른 나머지를 연산하는 방법의 구현 과정을 살펴보면, 먼저 제1변환부(10)와 제2변환부(20)는 제1정수와 제2정수를 입력받아 각각 n비트의 제1이진수와 제2이진수로 변환한다(S10).
그리고 제1덧셈부(40)는 제1보수 처리부(90)를 통해 제2이진수를 보수 처리한 이진수와, 제1이진수 및 1을 합산한다(S20).
이어서 제2덧셈부(50)는 제2이진수와 미리 설정된 기준정수(t)를 합산하고(S30), 제3덧셈부(60)는 제2보수 처리부(100)를 통해 제2덧셈부(50)의 합산 결과를 보수 처리한 이진수와 제1이진수 및 1을 합산한다(S40).
다음으로, 제어부(70)는 제1정수와 제2정수의 대소에 기초하여(S50) 제1정수와 제2정수의 뺄셈 결과를 소수로 나눈 나머지를 결정한다.
전술한 바와 같이, 본 실시예에서는 제1정수와 제2정수의 뺄셈 결과를 소수로 나눈 나머지를 병렬로 위치하는 별개의 덧셈부(40 내지 60)를 통해서 연산(S20 내지 S40)하기 때문에, 제1정수와 제2정수의 대소 관계만을 알 수 있으면 그에 해당하는 합산 결과가 제1정수와 제2정수의 뺄셈 결과를 소수로 나눈 나머지인 것으로 결정할 수 있다.
구체적으로 제1정수가 제2정수 이상이면 제어부(70)는 제1덧셈부(40)의 합산 결과에 포함된 n비트의 이진수를, 제1정수와 제2정수의 뺄셈 결과를 소수로 나눈 나머지로 결정한다(S60).
반면 제1정수가 제2정수 미만이면 제어부(70)는 제3덧셈부(60)의 합산 결과에 포함된 n비트의 이진수를, 제1정수와 제2정수의 뺄셈 결과를 소수로 나눈 나머지로 결정한다(S62).
이와 같이 본 실시예에서는 제1정수와 제2정수의 대소 관계에 따라 서로 다른 방식으로 간단한 연산을 수행하고, 제1정수와 제2정수의 대소 관계를 반영하여 어떠한 연산 결과가 제1정수와 제2정수의 뺄셈 결과를 소수로 나눈 나머지인지 결정한다.
이어서 제3변환부(30)는 제1정수와 제2정수의 뺄셈 결과를 소수로 나눈 나머지로 결정되는 이진수를 십진수로 변환하고(S70), 출력부(80)는 변환되는 십진수를 출력하여 사용자가 제1정수와 제2정수의 차를 소수로 나눈 나머지를 간단하게 확인할 수 있도록 한다.
본 실시예에 따르면, 두 정수의 대소 관계와 무관하게 복수의 덧셈부를 통해서 두 정수의 뺄셈 결과를 소수로 나눈 나머지를 연산하고, 나중에 두 정수의 대소 관계에 따라 두 정수의 뺄셈 결과를 소수로 나눈 나머지를 결정함으로써 보다 빠르게 나머지를 연산할 수 있다.
또한 본 실시예는 합산 결과에 포함된 최상위 비트를 확인하는 방식으로 간단하게 두 정수의 대소 관계를 판단할 수 있다.
본 발명은 도면에 도시된 실시예를 참고로 하여 설명되었으나, 이는 예시적인 것에 불과하며 당해 기술이 속하는 기술분야에서 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시예가 가능하다는 점을 이해할 것이다. 따라서, 본 발명의 진정한 기술적 보호범위는 아래의 특허청구범위에 의하여 정해져야 할 것이다.
10: 제1변환부
20: 제2변환부
30: 제3변환부
40: 제1덧셈부
50: 제2덧셈부
60: 제3덧셈부
70: 제어부
80: 출력부
90: 제1보수 처리부
100: 제2보수 처리부

Claims (11)

  1. 두 정수의 뺄셈 결과를 소수(Prime number)로 나눈 나머지를 연산하는 장치에 있어서,
    제1정수와 제2정수를 입력받아 각각 n비트의 제1이진수와 제2이진수로 변환하는 제1변환부, 제2변환부;
    상기 제2이진수를 보수 처리한 이진수와 상기 제1이진수 및 1을 합산하는 제1덧셈부;
    상기 제2이진수와 상기 소수에 대응하여 결정되는 기준정수를 합산하는 제2덧셈부;
    상기 제2덧셈부의 합산 결과를 보수 처리한 이진수와 상기 제1이진수 및 1을 합산하는 제3덧셈부; 및
    상기 제1정수와 제2정수의 대소에 기초하여 상기 제1덧셈부의 합산 결과 또는 상기 제3덧셈부의 합산 결과 중 하나를 선택하되, 상기 제1정수가 상기 제2정수 이상이면 상기 제1덧셈부의 합산 결과에 포함된 n비트의 이진수를, 상기 제1정수와 제2정수의 뺄셈 결과를 소수로 나눈 나머지로 결정하는 제어부
    를 포함하는 나머지를 연산하는 장치.
  2. 제 1항에 있어서,
    상기 제2이진수를 보수 처리하는 제1보수 처리부와 상기 제2덧셈부의 합산 결과를 보수 처리하는 제2보수 처리부를 더 포함하는 것을 특징으로 하는 나머지를 연산하는 장치.
  3. 제 1항에 있어서,
    상기 기준정수는 상기 소수를 2n - t로 표현했을 때 t로 설정되는 것을 특징으로 하는 나머지를 연산하는 장치.
  4. 제 1항에 있어서,
    상기 제어부는 상기 제1정수가 상기 제2정수 미만이면 상기 제3덧셈부의 합산 결과에 포함된 n비트의 이진수를 상기 제1정수와 제2정수의 차를 소수로 나눈 나머지로 결정하는 것을 특징으로 하는 나머지를 연산하는 장치.
  5. 제 1항에 있어서,
    상기 제어부는 상기 제1덧셈부의 합산 결과에 포함된 (n+1)번째 비트가 1이면 상기 제1정수가 상기 제2정수 이상인 것으로 판단하고, 상기 합산 결과에 포함된 (n+1)번째 비트가 0이면 상기 제1정수가 상기 제2정수 미만인 것으로 판단하는 것을 특징으로 하는 나머지를 연산하는 장치.
  6. 제 1항에 있어서,
    상기 제어부에 의해 상기 제1정수와 제2정수의 차를 소수로 나눈 나머지로 결정되는 이진수를 십진수로 변환하는 제3변환부; 및
    상기 제3변환부에서 변환되는 십진수를 출력하는 출력부
    를 더 포함하는 것을 특징으로 하는 나머지를 연산하는 장치.
  7. 두 정수의 뺄셈 결과를 소수(Prime number)로 나눈 나머지를 연산하는 방법에 있어서,
    제1변환부와 제2변환부가 제1정수와 제2정수를 입력받아 각각 n비트의 제1이진수와 제2이진수로 변환하는 단계;
    제1덧셈부가 상기 제2이진수를 보수 처리한 이진수와 상기 제1이진수 및 1을 합산하는 단계;
    제2덧셈부가 상기 제2이진수와 상기 소수에 대응하여 결정되는 기준정수를 합산하는 단계;
    제3덧셈부가 상기 제2덧셈부의 합산 결과를 보수 처리한 이진수와 상기 제1이진수 및 1을 합산하는 단계; 및
    제어부가 상기 제1정수와 제2정수의 대소에 기초하여 상기 제1정수와 제2정수의 뺄셈 결과를 소수로 나눈 결과를 결정하는 단계를 포함하되, 상기 제어부는 상기 제1정수가 상기 제2정수 이상이면 상기 제1덧셈부의 합산 결과에 포함된 n비트의 이진수를, 상기 제1정수와 제2정수의 뺄셈 결과를 소수로 나눈 나머지로 결정하는 것을 특징으로 하는 나머지를 연산하는 방법.
  8. 제 7항에 있어서,
    상기 제1정수와 제2정수의 뺄셈 결과를 소수로 나눈 결과를 결정하는 단계에서, 상기 제어부는 상기 제1정수가 상기 제2정수 미만이면 상기 제3덧셈부의 합산 결과에 포함된 n비트의 이진수를 상기 제1정수와 제2정수의 뺄셈 결과를 소수로 나눈 나머지로 결정하는 것을 특징으로 하는 나머지를 연산하는 방법.
  9. 제 7항에 있어서,
    상기 제2이진수와 상기 소수에 대응하여 결정되는 기준정수를 합산하는 단계에서, 상기 기준정수는 상기 소수를 2n - t로 표현했을 때 t로 설정되는 것을 특징으로 하는 나머지를 연산하는 방법.
  10. 제 7항에 있어서,
    상기 제1정수와 제2정수의 뺄셈 결과를 소수로 나눈 나머지를 결정하는 단계에서, 상기 제어부는 상기 제1덧셈부의 합산 결과에 포함된 (n+1)번째 비트가 1이면 상기 제1정수가 상기 제2정수 이상인 것으로 판단하고, 상기 합산 결과에 포함된 (n+1)번째 비트가 0이면 상기 제1정수가 상기 제2정수 미만인 것으로 판단하는 것을 특징으로 하는 나머지를 연산하는 방법.
  11. 제 1항에 있어서,
    상기 제1정수와 제2정수의 뺄셈 결과를 소수로 나눈 나머지를 결정한 이후에, 제3변환부가 상기 제1정수와 제2정수의 뺄셈 결과를 소수로 나눈 나머지로 결정되는 이진수를 십진수로 변환하는 단계; 및
    출력부가 상기 변환되는 십진수를 출력하는 단계
    를 더 포함하는 것을 특징으로 하는 나머지를 연산하는 방법.
KR1020140127788A 2014-09-24 2014-09-24 나머지를 연산하는 장치 및 그 방법 KR20160035882A (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020140127788A KR20160035882A (ko) 2014-09-24 2014-09-24 나머지를 연산하는 장치 및 그 방법
PCT/KR2014/010326 WO2016047848A1 (ko) 2014-09-24 2014-10-31 나머지를 연산하는 장치 및 그 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020140127788A KR20160035882A (ko) 2014-09-24 2014-09-24 나머지를 연산하는 장치 및 그 방법

Publications (1)

Publication Number Publication Date
KR20160035882A true KR20160035882A (ko) 2016-04-01

Family

ID=55581357

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020140127788A KR20160035882A (ko) 2014-09-24 2014-09-24 나머지를 연산하는 장치 및 그 방법

Country Status (2)

Country Link
KR (1) KR20160035882A (ko)
WO (1) WO2016047848A1 (ko)

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100206116B1 (ko) * 1996-01-17 1999-07-01 윤종용 나머지 계산방법 및 회로
US5910910A (en) * 1997-06-23 1999-06-08 Sun Microsystems, Inc. Circuit and method for rapid calculation of quotients and square roots
JP2000347836A (ja) * 1999-06-04 2000-12-15 Sony Corp 高次基数除算器およびその方法
US8930431B2 (en) * 2010-12-15 2015-01-06 International Business Machines Corporation Parallel computation of a remainder by division of a sequence of bytes

Also Published As

Publication number Publication date
WO2016047848A1 (ko) 2016-03-31

Similar Documents

Publication Publication Date Title
US10073676B2 (en) Reduced floating-point precision arithmetic circuitry
CN105468331B (zh) 独立的浮点转换单元
CN107305485B (zh) 一种用于执行多个浮点数相加的装置及方法
US9696964B2 (en) Multiply adder
KR102253096B1 (ko) 부동 소수점 수를 정수로 변환하기 위한 전자 장치 및 시스템, 및 그것의 작동 방법
JP6360450B2 (ja) 浮動小数点オペランドを乗算するためのデータ処理装置及び方法
US9851947B2 (en) Arithmetic processing method and arithmetic processor having improved fixed-point error
JP2006227939A (ja) 演算装置
JP2013182619A (ja) 多項式演算のための部分積発生装置及び方法
JP2005018759A (ja) 2の浮動小数点数乗の概算を実施するための方法および装置
JP4273071B2 (ja) 除算・開平演算器
Mahakalkar et al. Design of High Performance IEEE754 Floating point multiplier using Vedic mathematics
JPH04205026A (ja) 除算回路
US10230376B2 (en) Apparatus and method for performing division
KR20160035882A (ko) 나머지를 연산하는 장치 및 그 방법
KR20170012147A (ko) 몽고메리 도메인을 위한 계산 방법, 계산 장치 및 컴퓨터 소프트웨어 제품
GB2535426A (en) Apparatus, method and program for calculating the result of a repeating iterative sum
JP2014229318A (ja) 関数モデルを純粋にハードウェア上で計算するモデル計算ユニット内での利用ためのfmaユニット
JP2019101896A (ja) 演算処理装置および演算処理装置の制御方法
CN109947393B (zh) 基于求余器的运算方法及装置
CN111630509B (zh) 执行积和运算的运算电路
KR102281047B1 (ko) 4개의 입력 내적 회로를 사용하는 삼각 함수 계산
Zakharov et al. The Complexity of a Pipelined Algorithm for Remainder Computing in a Given Modulo
RU2652450C1 (ru) Устройство вычисления модулярного произведения Монтгомери
KR20170133787A (ko) 3으로 나누는 이진 연산 장치 및 방법

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right