INVERT — 비트 반전

INVERT — 비트 반전

INVERTx1의 모든 비트를 반전시켜 그 논리 역 x2를 구하는 코어 단어예요.

출처: INVERT — Forth 2012 Standard

본문

스택 효과

( x1 -- x2 )

설명

x1의 모든 비트를 반전시켜 그 논리 역 x2를 구해요.

참조 (See)

  • 6.1.1910 NEGATE
  • 6.1.0270 0=
  • A.6.1.1720 INVERT

합리성 (Rationale)

NOT이라는 단어는 원래 플래그 연산자로, 제어 구조를 읽기 쉽게 하기 위해 Forth에 제공되었어요. 의도된 사용법 아래에서 다음 두 정의는 동일한 결과를 만들었어요:

: ONE ( flag -- )
   IF
      ." true"
   ELSE
      ." false"
   THEN
   ;
: TWO ( flag -- )
   NOT IF
      ." false"
   ELSE
      ." true"
   THEN
   ;

이것은 NOT을 구 -1 XOR과 기능적으로 동등한 셀 폭 1의 보수 연산으로 재정의한 Forth-83 표준 이전의 흔한 사용법이었어요. 동시에 이 단어가 다루는 데이터 타입은 플래그에서 셀 폭 비트 모음으로 바뀌었고, true의 표준 값은 "1"(최우측 비트만 설정)에서 "-1"(모든 비트 설정)로 바뀌었어요. 이러한 TRUENOT의 정의가 이전 정의와 호환되지 않았으므로, 많은 Forth 사용자들은 옛 정의에 계속 의존해요. 따라서 두 버전 모두 널리 쓰여요. 그러므로 NOT의 사용법은 현재 표준화될 수 없어요. NOT의 두 전통적 의미 — 플래그의 부정과 1의 보수 연산 — 는 각각 0=INVERT에 의해 제공돼요.

테스트 (Testing)

T{ 0S INVERT -> 1S }T
T{ 1S INVERT -> 0S }T

더 알아보기 (Learn more)

출처: INVERT — Forth 2012 Standard