Delphi Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
델파이 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
FreePascal/Lazarus
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
델마당
볼랜드포럼 광고 모집

델파이 Q&A
Delphi Programming Q&A
[10273] Re:이것좀 봐주세요.. 비트검사(?)
박지훈.임프 [cbuilder] 1626 읽음    2005-10-07 21:38
짐작하신 대로입니다.
그리고 말씀하신 코드를 델파이 코드로 바꾸는 방법은 문법 그대로 치환하면 됩니다.

&는 C/C++에서 and 비트연산자 입니다. 파스칼에서는 and이구요.
그리고 아시겠지만 C/C++에서 0x는 16진수 표시인데 파스칼에서는 $입니다.
마지막으로, C/C++에서는 if문에서 0이 아닌 모든 값은 true로 간주되지만 파스칼에서는 명시적으로 논리값(true/false)로
만들어줘야 하지요.

따라서 C/C++의 다음 코드는,
if (seedlokal.wort & 0x80000000) ...
파스칼에서는 다음과 같이 됩니다.
if seedlokal.wort and $80000000 <> 0 then ...

if문 다음의 코드는 질문하지 않으셨으니 해결하신 거 같지만, 혹시나 싶어서 써봅니다.
seedlokal.wort = seedlokal.wort << 1;     => seedlokal.wort := seedlokal.wort shl 1;
seedlokal.wort = seedlokal.wort ^ mask;   => seedlokal.wort := seedlokal.wort xor mask;

그럼...


레몬에이드 님이 쓰신 글 :
: C언어의 원본중 일부입니다.
:
: 다른거는 다 델파이로 바꾸었는데.
:
:
: if (seedlokal.wort & 0x80000000)   <-----이게 속썩이네여..
:
: 의미로 봐서는 seedlokal.wort (Record 형으로 처리 했습니다. wort:Longint; )특정 비트가 1 일때
: 그러니까 0x80000000  즉...31번째의 비트가 1로 되는걸 검사해서 1이면 실행문을 실행한다고
: 나름대로 해석했는데 맞는지 모르겠습니다.. ㅡ.,ㅡ
:
: ------------------------------------
: if (seedlokal.wort & 0x80000000)
: {
: seedlokal.wort = seedlokal.wort << 1;
: seedlokal.wort = seedlokal.wort ^ mask;
: }
: -------------------------------------
:
: 질문은 어떤 변수의 값의 특정 비트의 on/off 를 알수 있는 방법을 잘 모르겠습니다.
: 델파이 초짜이기도 하구여..^^
: 고수분들의 도움 바랍니다..

+ -

관련 글 리스트
10271 이것좀 봐주세요.. 비트검사(?) 레몬에이드 1485 2005/10/07
10273     Re:이것좀 봐주세요.. 비트검사(?) 박지훈.임프 1626 2005/10/07
10274         Re:Re:이것좀 봐주세요.. 비트검사(?) 레몬에이드 895 2005/10/08
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.