Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
cubloc:laddernumber:index [2026/03/04 20:36] – [2. 데이터 타입 및 범위 제한] admincubloc:laddernumber:index [2026/03/25 03:38] (current) – [잘못된 사용 예시] admin
Line 1: Line 1:
 ====== 수 시스템 (Number System) ====== ====== 수 시스템 (Number System) ======
  
-더로직에서 사용하는 기본 데이터 처리 단위는 **워드(16비트)**와 **더블워드(32비트)**입니다. \\ 큐블록 레더 환경의 특성에 맞춘 수 체계 가이드는 다음과 같습니다.+더로직에서 사용하는 기본 데이터 처리 단위는 **워드(16비트)**와 **더블워드(32비트)**입니다. \\ 큐블록 레더 환경은 시스템 예약 주소와의 간섭을 방지하기 위해 엄격한 치 범위를 준수해야 합니다.
  
 ===== 1. 메모리 구조 (D영역) ===== ===== 1. 메모리 구조 (D영역) =====
Line 10: Line 10:
 ===== 2. 데이터 타입 및 범위 제한 ===== ===== 2. 데이터 타입 및 범위 제한 =====
  
-^ 단위 ^ 비트 수 ^ 10진수 범위 (Unsigned) ^ 16진수 범위 ^+본 시스템은 하드웨어 제어 포트(P, WP 등)와의 데이터 충돌을 방지하기 위해 **부호 없는 양수(Unsigned Integer)** 사용을 원칙으로 합니다. 
 + 
 +^ 단위 ^ 비트 수 ^ 10진수 사용 범위 ^ 16진수 사용 범위 ^
 | 워드 (Word) | 16-bit | 0 ~ 65,535 | 0000H ~ FFFFH | | 워드 (Word) | 16-bit | 0 ~ 65,535 | 0000H ~ FFFFH |
-| 더블워드 (D-Word) | 32-bit | -2,147,483,648  +2,147,418,111 | 80000000H ~ 7FFFEFFFH | +| 더블워드 (D-Word) | 32-bit | ~ 2,147,418,111 | 00000000H 7FFEFFFFH |
-| 더블워드 (D-Word) | 32-bit | -2,147,483,648  ~ +2,147,483,647 | 80000000H 7FFFFFFFH |+
  
-> **알림:** 워드(Word)는 부호없는 정수로 처리됩니다. 단 더블워드(D-Word)는 부호있는 정수로 처리됩니다. 부호있는 정수의 경우에는 2의 보수 형식이 적용됩니다.+===== 3상한치 제한 =====
  
-===== 3. 더블워드에서의 음수 및 부호 처리 (2의 보수 사용) =====+==== 시스템 예약 주소와의 충돌 ==== 
 +  * **0x7FFF1000 ~ 0x7FFFFFFF** 영역은 하드웨어 입출력 포트(P0, WP0 등)를 제어하기 위한 **Memory-Mapped I/O** 주소로 예약되어 있습니다. 
 +  * ** 워드(Word)와 더블워드(D-Word) 모두 **양(Unsigned)** 처리를 권장합니다. 특히 더블워드는 시스템 예약 주소 영역(0x7FFF1000 이상)을 침범하지 않도록 상한치 **0x7FFEFFFF** 이내에서만 사용해야 합니다.
  
-더블워드의 경우 , 음수 표현을 위해 **2의 보수(2's Complement)** 을 사용합니다. 
  
-  * **음수 생성 방법:**  +==== 잘못된 사용 예시 ====
-  - 양수 값의 모든 비트를 반전(NOT 연산)합니다. +
-  - 반전된 값에 1을 더합니다(ADD 1).+
  
-  * **값의 해석:**  +더블워드에 시스템 상한을 초과하는 값(예: 0xEE6B4000)을 입력하면 아래와 같이 에러가 발생하거나 잘못된 연산 결과가 나옵니다.
- +
-  - **MSB가 0인 경우:** 0 또는 양수로 해석합니다. +
-  - **MSB가 1인 경우:** 시스템상에서는 큰 양수로 보이나, 2의 보수 체계에서는 음수로 간주합니다. +
- +
-==== 주의할 점 ==== +
- +
-더블워드의 경우 아래와 같이 4억을 넣을수 없습니다. 부호있는 32비트 정수의 최대 숫자는 +2,147,483,647이기 때문입니다.+
  
 {{ :cubloc:laddernumber:dwerr.png?nolink |}} {{ :cubloc:laddernumber:dwerr.png?nolink |}}
  
-아래와 같이 +2,147,483,647미만의 값을 사용하실 수 있습니다.+반드시 아래와 같이 상한치 미만의 양수 값을 사용하십시오.
  
 {{ :cubloc:laddernumber:dwval.png?nolink |}} {{ :cubloc:laddernumber:dwval.png?nolink |}}
  
-더블워드의 경우 음수도 넣을 수 있니다.+ 
 +아래와 같이 음수를 DWMOV로 넣을 수는 지만, 이는 예기치 못한 시스템 에러가 발생할 수 있으므로, 피해야 합니다.
  
 {{ :cubloc:laddernumber:dwval2.png?nolink |}} {{ :cubloc:laddernumber:dwval2.png?nolink |}}
-====연산 주의==== 
- 
-  * 곱셈이나 나눗셈 시 MSB가 1인 데이터를 다루면 결과값이 예상과 다를 수 있으므로, 연산 전후에 부호 비트 체크가 필요할 수 있습니다. 
- 
-> **작업 팁:** `-1`을 표현하고 싶다면 , 32비트 연산 에서 `FFFFFFFFH`를 사용하십시오. 이는 시스템에서 4,294,967,295로 저장되지만, 2의 보수 연산 규칙에 의해 `-1`로서 작동합니다. 
  
-[[cubloc:index#더_로직:|CUBLOC 더로직 목록으로 가기]]+[[cubloc:index#더_로직:|CUBLOC 더로직 목록으로 가기]]