창조유저그룹-커즈닷컴
Window close
ID :     PASS :   
   
  처음으로
  창조
  창조 소개
창조 다운로드
CUGz.com 소개
온라인 도움말
  커뮤니티
  가입인사
자유게시판
Q/A게시판 (0/1)
TIP/TECH
열린강좌
자주하는질문
아이디어게시판
  자료실
  소스자료실
프로그램자료실
기타자료실
명예의 전당
이미지 자료실
  지원/기타
  표준용어재정
구글 웹서치  
관리자 전용


창조 팁
- '창조' 에 관한 팁을 올리는 곳입니다. 다수의 이미지가 필요하시면 아래 '이미지 자료실' 에 업로드 후 불러와 주세요..


LIST ALL
Posted by 지상현2005-10-08 12:07:42, Hit : 6833
창조에서 음수를 사용할 때 주의하자!
Homepage : http://ssidang.x-y.net
Post URL : http://cugz.sjworks.net/bbs/zboard.php?id=tip&no=246
가끔, 사용자함수든 API든 인자에 음수를 사용할 때가 있습니다.
그런데, 창조에선 음수에 좀 버그가 있는 것 같네요...

심한 경우에는, 함수 실행이 되지 않고 그 자리에서 실행이 끝나는 심각한 버그가 있습니다 -_-
심지어 음수는 값도 반환하지 않고 끝납니다.


이런 증상을 어찌해야 할까요?
네, 음수를 쓰지 않는 것입니다 -_-
자신이 만든 함수에서 가능한 음수를 쓰지 않으면 됩니다.


문제는, API 같은 거죠.
이런 놈들은 가끔 음수를 요구하는데, 음수를 받아들이지 못하니 문제가 됩니다 -_-

그러나 방법은 있습니다.
음수를 양수로 바꿔수면 됩니다. 이게 무슨 소리냐? 하실 지 모르겠는데, 컴퓨터에서 같은 메모리를 가지고 수를 표현 할 때, 음수/양수형으로 나타낼 수 있습니다.

음수형은 음수까지 표현할 수 있지만, 그 만큼 큰 값을 표시할 수 없습니다.
양수형은 큰 값을 표시할 수 있지만, 음수를 표현할 수 없습니다.

2바이트의 메모리를 가지고 있다면,
양수형은 0~65535 까지 나타낼 수 있지만, 음수형은 -32768 ~ 32767 까지 표현할 수 있습니다.
보시는대로 음수형을 사용하면 좀 더 큰 수를 표현하기 곤란해집니다.
(물론 둘 다 같은 크기의 메모리를 사용하면)


그건 그렇고, 결과적으로 음수형과 양수형은 인식하기 나름일 뿐 메모리는 같다는 겁니다.
1 바이트의 메모리에서, 16진수로 A3 라는 데이터가 있다면...

양수형일 때는 163 이라는 값으로 해석합니다.
음수형일 때는 -93 이라는 값으로 해석합니다.

뭐가 다를까요? -.-
일반적으로 양수형을 음수형으로 바꿀 때는 2의 보수법이라는 방법을 사용합니다.

한번 양수 163 이란 값(16진수로 A3)을 음수로 해석하면 어떻게 나오는지 볼까요?

별 거 없습니다! 원리는 집어 치우고, 방법을 소개해보죠.
1. 양수형에서 1을 뺍니다. (163 - 1 = 162)
2. 비트 반전을 합니다. (162는 2진수로 10100010, 반전하면 01011101)
3. 그럼 끝입니다 -_- (01011101 은 16진수로 5D, 10진수로 93)

93이 나오네요. 음수형이기 때문에 앞에 - 가 있다고 생각해야죠.
그러니까, 163 이란 값은 음수형으로 해석하면 -93 이 됩니다.




감이 오시나요? 음수가 안된다면, 같은 값의 양수로 넣으면 됩니다!
해석하기에 따라 값이 다르지만, 메모리에 저장된 내용은 같은 것이니까요...

-38 을 양수형으로 바꾸려면 어떻게 해야 할까요?
반대로 하면 됩니다. 한번 해볼까요?

1. 음수 기호를 떼버립니다. (-38 => 38)
2. 비트 반전 합니다. (38은 이진수로 00100110, 반전하면 11011001)
3. 이번에는 1을 더합니다. (11011001은 16진수로 D9, 10진수로 217... 1 더하면 218)

답이 나왔습니다.
음수 표현 -38 은 양수 표현 218 과 같습니다.
그러니까, 이 두 값은 메모리에 똑같이 올라가지만, 해석하는 방법에 따라 -38 이 되기도 하고 218 이 되기도 한다는 겁니다.


우리가 양수로 218 을 보내주면, 해석하는 쪽에선 이 것을 음수로 여겨 -38 로 해석한다는 뜻이죠.
다시 말해, 우리가 어떤 형태로 보내든 해석하는 쪽(DLL 함수)은 무조건 음수로 해석 시도합니다.

그러니까, 음수를 인자로 넣을 때는 이런 식으로 변환을 해줘야 합니다.

참고로, 창조의 실수는 4 바이트 = 32 비트 이기 때문에 좀 다릅니다.
-38 을 창조식으로 고치면 4294967258 이 나옵니다 -_-

암산은 조금 힘들겠죠?
아무래도 프로그램을 하나 만들어야 할 것 같네요~

강성민   2006-01-06 PM 9:52:31  
아... 저 반전하는걸 "보수" 라고하죠
반대값을 넣어주는건데 이렇게쓰이는군요
LIST ALL               GO TO THE TOP


N
   Subject
Posted by
Date
H
192
   보안의 10대 법칙 [11]
위자드 2004/12/22  5145
191
   기본객체의 글꼴을 '돋움'에서 '굴림' 으로 변경하기.. [12]
변혁수 2005/01/19  5117
190
   내용 에서 내용으로 문자 빨리 복사해가기.. [4]
손상진 2005/01/21  5448
189
   [팁] 팝업메뉴 만들기 [초보용] [5]
강성민[FreeCreate] 2005/03/04  4733
188
   [TIP] 창조 0.9의 그림판 투명창을 깔끔하게 만들기 [3]
권선중 2005/03/08  6312
187
   [TIP] 프로그램 제작시 프로그램크기는 무시하세요.... [4]
권선중 2005/03/09  5716
186
   api 사용 파일다운로드시.. [2]
박재성[날개달기] 2005/03/22  5218
185
   [팁] ^ㅁ^ [4]
박재성[날개달기] 2005/04/14  5280
184
   컴퓨터 단위들.. [2]
손상진 2005/04/17  5403
183
   초보의 허접 팁입니다 - 창 종료할때 위치와 크기 기억하기 - [2]
짱아 2005/04/26  5098
182
   [버그리포트] 이름표#숫자.제목:="랄랄라"; 식의 명령을 쓸때.. [4]
손상진 2005/06/26  5131
181
   [끼적 Tip] 다계정 로그인 구현 [2]
권선중 2005/06/26  4752
180
   [TIP]선중암호화 구현의 보완방법 [2]
권선중 2005/08/04  5521
179
   커즈닷컴 로그인 주소 [2]
qkrwhdgns 2005/08/21  5488
178
   xp에서 창조로 시스템 종료및 리부팅 하기.. [9]
권선중 2005/08/23  5551
177
   [Tip] 창조로 엑셀파일 형식으로 저장하기~ ㅋ [6]
최재일 2005/09/04  5955
176
   (Tip(?)) 명령어 편집창에서 키보드로 블록(선택)잡기 [4]
qkrwhdgns 2005/10/03  6066
175
   팁입니다 ㅡ,ㅡ;; 확장자없는 미디어 사용하기 ㅡㅡ; [1]
만물 2005/10/04  6166
174
   [팁] 파일에 정수값 쓰기
지상현 2005/10/05  5505
173
   [팁#2] 파일에서 정수값 읽기!
지상현 2005/10/05  5764
172
   [팁#3] 파일에 정수값 쓰기, 또 다른 방법!
지상현 2005/10/05  5554
171
   창조 도움말이 뻥을 쳤다! [5]
지상현 2005/10/08  5328

   창조에서 음수를 사용할 때 주의하자! [1]
지상현 2005/10/08  6833
169
   확실한 시스템/윈도우/임시 폴더 알아오기 [6]
지상현 2005/10/28  6324
168
   마우스/키보드 누를때,눌렀을때.. 속도(?) [1]
qkrwhdgns 2005/11/13  5622
LIST ALL   Prev [1][2][3][4][5][6] 7 [8][9][10]..[14] Next
Copyright 1999-2024 Zeroboard / skin by reedyfox in miniwini style
로그인
지우개 Expert 3.0
제작자 : 천호성 님 [LINK]
로그인
대박로또2005
제작자 : 최재일 님 [LINK]
로그인
1박종훈15292 점
2지상현8809 점
3손상진7388 점
4권선중6060 점
5이진백5174 점
로그인
가입일닉네임
05/31김동률
03/31홍형기
09/01o00pp99oo
12/27이재민
11/20이희철
로그인