INVERT — 비트 반전
INVERT — 비트 반전
INVERT는 x1의 모든 비트를 반전시켜 그 논리 역 x2를 구하는 코어 단어예요.
본문
스택 효과
( 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"(모든 비트 설정)로 바뀌었어요. 이러한 TRUE와 NOT의 정의가 이전 정의와 호환되지 않았으므로, 많은 Forth 사용자들은 옛 정의에 계속 의존해요. 따라서 두 버전 모두 널리 쓰여요. 그러므로 NOT의 사용법은 현재 표준화될 수 없어요. NOT의 두 전통적 의미 — 플래그의 부정과 1의 보수 연산 — 는 각각 0=와 INVERT에 의해 제공돼요.
테스트 (Testing)
T{ 0S INVERT -> 1S }T
T{ 1S INVERT -> 0S }T