inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

설계독학맛비's 실전 Verilog HDL Season 1 (Clock부터 Internal Memory까지)

[HDL 9장] Signed / Unsigned 를 이해하고 연산 실수를 피해보기 (내가 원한 결과 값이 안나와..ㅠㅠ)

Unsigned 연산 결과인 156이 -100의 2의 보수가 되는 원리가 궁금합니다.

해결된 질문

170

dlgigi324

작성한 질문수 1

1

안녕하세요.

[1. 질문 챕터] : HDL 9장, 5분 50초

[2. 질문 내용] : Unsigned 연산 결과인 156이 -100의 2의 보수가 되는 원리가 궁금합니다.

[3. 시도했던 내용, 그렇게 생각하는 이유] : Unsigned A : 01100100 (십진수 : 100), Unsigned B : 11001000(십진수 : 200)

강의에서, 2의 보수 위키백과 내용 중, '2의 보수는 대부분의 산술연산에서 원래 숫자의 음수처럼 취급한다'. (2분 57초)

A - B = A + (-B) = 01100100 + 00111000 = 10011100 (십진수 : 156)

이를 통해, Unsigned 연산 결과 156이 나온 원리를 알았습니다.

 

하지만, A, B를 signed type이라고 가정했을 때의 결과인 -100이 unsigned type으로 정의한 A, B의 연산 결과의 2의 보수값이 되는 원리를 정확히 모르겠습니다.

8bit 중, MSB를 취급하는 방법이 완전히 다른데, 어떻게 2의 보수 관계가 되나요?

verilog-hdl fpga 임베디드

답변 2

1

설계독학맛비

안녕하세요 🙂

AI 인턴이 답을 잘 달아주었는데요.

Unsigned로 연산한 결과인 156이 signed 연산의 결과인 -100의 2의 보수가 되는 이유 를 질문하신 걸로 이해했습니다.

기본 개념을 먼저 보시면,

1. Signed와 Unsigned의 차이

  • Unsigned: 모든 비트를 숫자로 해석.

    • 예: 8-bit에서 11001000unsigned로 200.

  • Signed: MSB를 부호 비트로 사용.

    • MSB가 0이면 양수, 1이면 음수.

    • 예: 8-bit에서 11001000signed로 -56 (-(256 - 200)).

2. 2의 보수 표현법

  • Signed 연산에서 음수를 표현하는 방식:

    • 음수 -X는 2의 보수로 표현.

    • 2의 보수 = 모든 비트를 뒤집고 +1.

    • 예: -100의 8-bit 표현은 10011100.

=================

여기서 핵심은, 8bit 는

  • signed 일때 range : -128 ~ 127

  • unsigned 일때 range : 0 ~ 255

     

이며, 이것은 Signed 타입 일때의 해석과, unsigned type 일때의 해석이 다르다, 그리고 8 bit 는 순환 한다는 것입니다.

Unsigned 연산 결과 156이 Signed 결과 -100의 2의 보수가 되는 원리

  • 핵심 원리: 이 관계는 이진수의 모듈러 연산 특성 때문입니다.

    • 모든 연산은 고정된 비트수(예: 8-bit)에서 수행되고, 오버플로우는 무시됩니다.

    • 따라서 8-bit에서는 숫자가 0~255로 순환(modulo 256).

    • 이 때문에 Signed와 Unsigned에서 결과 해석이 달라지더라도 이진수는 동일.

MSB의 역할:

  • MSB는 Signed 연산에서 음수 여부를 나타내는 부호 비트로 사용.

  • Unsigned에서는 MSB도 단순 숫자로 간주.

모듈러 연산의 순환:

  • 8-bit에서 가능한 값은 0~255로 순환:

    • 100에서 200을 뺀 결과는 156.

    • Unsigned 156은 Signed로 -100.


[결론]

  • Unsigned 연산 결과 156Signed 연산의 결과 -100과 2의 보수 관계에 있습니다.

  • 이는 고정된 비트수에서의 모듈러 연산 특성과 Signed/Unsigned 해석 방식의 차이 때문입니다.

즐공하세요 🙂

1

dlgigi324

모듈러 연산의 순환 개념을 알게 해주셔서 감사합니다 !!

 

연산 결과 A - B = -100

고정된 비트수에서의 모듈러 연산 특성에 의해, -100은 Unsigned로 표현되길 156이 된다.

0

인프런 AI 인턴

안녕하세요, 인프런 AI 인턴입니다.

dlgigi324님께서 Verilog HDL 9장에서 2의 보수 관련하여 질문하신 부분에 대해 설명드리겠습니다.

먼저, 2의 보수는 컴퓨터 시스템에서 연산의 결과를 간단하게 음수로 표현하는 데 사용됩니다. 2의 보수 연산을 수행할 때, 일반적으로 양수 값을 반전(NOT 연산)한 후 1을 더함으로써 음수를 얻을 수 있습니다. 이는 컴퓨터 산술에서 별도의 보정없이 간단하게 덧셈 연산을 수행할 수 있게 해줍니다.

구체적으로, A와 B가 각각 8비트로 표현된 경우, A가 100이고 B가 200이라고 가정해봅시다:

  • A: 01100100 (100)
  • B: 11001000 (-56, 반전 후 1을 더하면 -B의 2의 보수가 됨)

여기서 A - B 연산은 사실상 A + (-B)처럼 구현됩니다. B를 반전(NOT) 시키고 1을 더하여 -B를 구한 후 A와 더하는 것이죠.

  1. B의 NOT: 00110111
  2. B의 2의 보수: 00111000 (+1)

이 2의 보수인 00111000을 A (01100100)에 더하면 10011100이 됩니다. 이 결과는 unsigned에서 156으로 해석되고, signed에서는 -100으로 해석됩니다.

이와 같은 차이는 연산의 결과를 해석하는 방식에서 발생합니다. MSB를 부호 비트로 볼 것인지, 그냥 비트의 일부분으로 볼 것인지에 따라 signed와 unsigned 숫자가 다르게 보이는 것이죠.


이와 관련하여 도움이 될 수 있는 몇 가지 링크를 추천드립니다:

  1. FPGA 연산 관련 질문 - 이 질문에서도 signed, unsigned 연산에 관련된 원리를 설명합니다.

  2. 비트 연산 및 오버플로우 - 2의 보수 연산에 대한 추가적인 이해를 도울 수 있는 내용이 포함되어 있습니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

latency 개념 구현

1

84

3

비바도 all os버전

1

67

2

초기화를 reset_n 이 '1'일 때가 아닌 '0' 일 때 실행시키는 이유 질문

1

68

2

다운로드용량

1

68

2

비바도리눅스설치

1

79

2

전체path복사넣기

1

60

2

Vivado 2025.2 리눅스 설치 후 실행 에러와 솔루션 (libxv_commontasks.so)

1

142

2

explorer.exe오류

1

99

3

mobaxterm설치오류

1

84

2

./build시, waveform 'divide color' 사용

1

52

2

Latch와 관련하여 (Time borrowing, Latch-based design)

1

122

2

clean 명령어가 안되는데, 따로 저장해줘야 하는지 궁금합니다.

0

57

1

안녕하세요 설치 관련 질문 드립니다.

1

60

3

16장 mealy 설계.

1

71

2

14장 Cycle 관련, Testbench 코드.

1

63

2

21강(16장) 초기값 설정이 적용되는 시점 질문

1

59

1

20강(15장) - 밀리 머신 관련하여 질문 드립니다.

1

63

2

build에러 질문

0

54

2

1장 ./build에서 에러가 나요

1

70

2

FPGA 강의 보드 문의 드립니다.

1

104

2

5장 DFF특성에 대한 질문

1

74

3

vivado linux 사용 이유.

1

135

2

메모리의 형태가 전체설계에 미치는 영향이 궁금합니다.

1

102

2

디스코드 멤버쉽 등업 관련 문제

1

92

2