앙앙123
98
2021-05-13 21:57:50
4
210

c언어에서 비트연산중 마스킹을 할때 0xffff000000000000의 의미


8바이트 정수에서 앞에서부터 2바이트를 뽑아낼 때

8바이트 정수& 0xffff000000000000 이렇게 마스킹을 하던데 여기서 f와 0을 어떻게 해석해야 하나요??

0
  • 답변 4

  • 안전라이딩
    672
    2021-05-13 22:54:42 작성 2021-05-13 22:55:35 수정됨
  • Hide_D
    688
    2021-05-13 23:32:39

    윗분 댓글로 충분히 답이 될 듯 하고요.

    64비트 정수에서 앞에서 16비트인데, 0xffff가 아니고 0xffff000000000000 이면 빅엔디안인가요...?

  • 앙앙123
    98
    2021-05-14 11:23:11

    맨 왼쪽에서부터 2바이트씩 뽑으려면 뒤에 0이붙어야 하지 않나요??

    그냥 0xffff는 오른쪽에서 부터 뽑는거 아닌가요??

  • 안전라이딩
    672
    2021-05-14 12:51:36

    앙앙123 네 byte order 차이가 날 뿐요.

    0x12345678 로 생각해보면

    Little Endian 

    0x12345678 & 0xFFFF

        78 56 34 12 00 00 00 00

    &  FF FF 00 00 00 00 00 00

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

        78 56 00 00 00 00 00 00


    0x12345678 & 0xFFFF000000000000 

        78 56 34 12 00 00 00 00

    &  00 00 00 00 00 00 FF FF

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

        00 00 00 00 00 00 00 00


    Big Endian

    0x12345678 & 0xFFFF

        00 00 00 00 12 34 56 78 

    &  00 00 00 00 00 00 FF FF

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

        00 00 00 00 00 00 56 78


    0x12345678 & 0xFFFF000000000000

        00 00 00 00 12 34 56 78

    &  FF FF 00 00 00 00 00 00

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

        00 00 00 00 00 00 00 00

  • 로그인을 하시면 답변을 등록할 수 있습니다.