짐작하신 대로입니다.
그리고 말씀하신 코드를 델파이 코드로 바꾸는 방법은 문법 그대로 치환하면 됩니다.
&는 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 를 알수 있는 방법을 잘 모르겠습니다.
: 델파이 초짜이기도 하구여..^^
: 고수분들의 도움 바랍니다..
|