ssongk
ssongk
ssongk
전체 방문자
오늘
어제

공지사항

  • resources
  • 분류 전체보기 (626)
    • CTF (24)
    • background (79)
      • fuzzing (5)
      • linux (29)
      • linux kernel (15)
      • windows (2)
      • web assembly (1)
      • embedded (0)
      • web (13)
      • crypto (9)
      • mobile (1)
      • AI (1)
      • etc.. (3)
    • write-up(pwn) (171)
      • dreamhack (102)
      • pwn.college (4)
      • pwnable.xyz (51)
      • pwnable.tw (3)
      • pwnable.kr (5)
      • G04T (6)
    • write-up(rev) (32)
      • dreamhack (24)
      • reversing.kr (8)
    • write-up(web) (195)
      • dreamhack (63)
      • LOS (40)
      • webhacking.kr (69)
      • websec.fr (3)
      • wargame.kr (6)
      • webgoat (1)
      • G04T (7)
      • suninatas (6)
    • write-up(crypto) (19)
      • dreamhack (16)
      • G04T (1)
      • suninatas (2)
    • write-up(forensic) (53)
      • dreamhack (5)
      • ctf-d (47)
      • suninatas (1)
    • write-up(misc) (13)
      • dreamhack (12)
      • suninatas (1)
    • development (31)
      • Linux (14)
      • Java (13)
      • Python (1)
      • C (2)
      • TroubleShooting (1)
    • 자격증 (8)
    • 이산수학 (1)
    • 정보보안 (0)
hELLO · Designed By 정상우.
ssongk

ssongk

이산수학

보수의 개념

2021. 12. 4. 11:05

보수

보수란 보충해주는 수를 의미한다. 

어떤 수 a에 대한 n의 보수는 a와의 합이 n이 되는 수이다.

1에 대한 10의 보수 : 1 + x = 10 -> x=9

3에 대한 5의 보수 : 3 + x = 5 -> x=2

 

n진수에선 n의 보수와 n-1의 보수가 존재한다.

10진수에는 10의 보수와 9의 보수가 존재하고, 8진수는 8의 보수와 7의 보수가 존재한다.

 

2진수(0과 1로 구성)를 사용하는 컴퓨터에는 2의 보수와 1의 보수가 존재한다.

1의 보수 : 어떤 수 a와의 합이 1(이진수로 1)이 되는 수

0에 대한 1의 보수 : 0 + x = 1 -> x=1

1에 대한 0의 보수 : 1 + x = 0 -> x=0

2의 보수 : 어떤 수 a와의 합이 2(이진수로 10)이 되는 수

0에 대한 2의 보수 : 0 + x = 0 -> x=0

1에 대한 2의 보수 : 1 + x = 10 -> x=1

 

2진수에서 1의 보수는 0은 1로, 1은 0으로 바꾸면 된다.

2의 보수에서 0에 대한 2의 보수는 0인데 이는 0에 대한 1의 보수인 1에 1을 더한 결과와 같다.(1 + 1 = 10)

1에 대한 2의 보수는 1이고 이는 1의 대한 1의 보수인 0에 1을 더한 결과와 같다.(0 + 1 = 1)

결과적으로 2진수 a에 대한 2의 보수는 a에 대한 1의 보수에 1을 더한 결과이다.

53의 2진수는 110101이고 1의 보수는 001010, 2의 보수는 001011이다. 

 

컴퓨터에서 수의 표현

컴퓨터에서는 한 워드에서 최상위 비트를 부호 비트(양수:0, 음수:1)로 사용하고 나머지는 데이터 비트로 사용한다.

표현 방식에는 3가지가 있다.

 

1. 부호화-절댓값

워드의 데이터 비트를 데이터의 절댓값으로 표현한다, 최상위 비트로 부호를 표현하고 나머지 비트에 정수 값을 적는다.

연산의 결과가 정확하지 않으며, 0에 대한 표현이 +0과 -0으로 두 가지가 발생한다.

 

2. 부호화-1의 보수

부호화-절댓값 표현에서 음수에 대해 1은0, 0은1로 변환하여 표현한다.

연산의 결과가 정확하고, 0에 대한 표현이 +0과 -0으로 두 가지가 발생한다.

 

3. 부호화-2의 보수

부호화-1의 보수 표현에 1을 더하여 표현한다.

연산의 결과가 정확하고, 0에 대한 표현이 한 가지로 통일된다.

 

양수는 세 가지 방식에서 모두 같다.

 

보수의 10진수 변환

1워드가 n비트일 때, 부호화-1의 보수로 표현된 값을 10진수로 변환하는 방법은 2가지가 있다.

1. -(2n-1-1)+(데이터 비트의 10진수 표현)

2. 주어진 1의 보수를 다시 1의 보수로 변환한 후, 10진수로 변환

 

1워드가 n비트일 때, 부호화-2의 보수로 표현된 값을 10진수로 변환하는 방법은 2가지가 있다.

1. -(2n-1)+(데이터 비트의 10진수 표현)

2. 주어진 2의 보수를 다시 2의 보수로 변환한 후, 10진수로 변환

    ssongk
    ssongk
    벌레 사냥꾼이 되고 싶어요

    티스토리툴바