Q&A

  • and연산의 결과값이 궁금하다...
var

Value: Byte;

begin

Value:=Trunc(Value And 255); --->요놈이 어떤 값으로 저장되는지요?



그리고 포트의 번지가 513h는 어떤포트를 가리키는지요?

1  COMMENTS
  • Profile
    안치봉 1999.07.06 22:35
    간단히 비트연산에 대해 설명을 드리죠.



    예를 들어...



    1 and 1 은 1 이 됩니다. 이런건 2진수로 보면 더 쉬운데...



    1을 4 비트로 표현하면 0001 입니다.



    0001

    and 0001

    --------

    0001



    비트중에서 1 과 1 을 and 연산하면 1 이되고

    비트중에서 1 과 0 을 and 연산하면 0 이되고

    비트중에서 0 과 1 을 and 연산하면 0 이되고

    비트중에서 0 과 0 을 and 연산하면 0 이되고..



    즉! 두 and 연산을 하는 두비트가 둘다 1 이면 1 이 되는겁니다... -.-;;



    예를 더 들면 대개 곱하기 연산을 할때..



    a := 2 * 1;



    을 쓰는것 보다는 비트연산의 하나인 shl 을 쓰면 더 빠릅니다.



    a := 2 shl 1;



    아래의 경우 제가 보기에는...



    Value 는 1바이트고 2진수로 8비트죠.

    255 도 1바이트고 2진수로 8비트죠.



    예를 들어.....



    Value := 255;

    Value := Value and 255; 하면 결과는 255 입니다.



    11111111

    and 11111111

    ------------

    11111111 => $FF => 255



    아래것은 아마도 값이 안변하지 않을까 합니다. 그런데 Trunc 함수가 들어가서... 어떻게 될지는....바이트의 계산인데 Trunc 는 안써도 될것 같은데...



    1 and 255 는 1 입니다.

    100 and 255 는 100 입니다.(단 한바이트($FF) 를 넘지 않을때)

    255 and 255 는 255 고요.





    박성훈 께서 말씀하시기를...

    > var

    > Value: Byte;

    > begin

    > Value:=Trunc(Value And 255); --->요놈이 어떤 값으로 저장되는지요?

    >

    > 그리고 포트의 번지가 513h는 어떤포트를 가리키는지요?