LECTURE 문제 풀던 중 이상한 점이 있습니다.

  • wogml000419
    wogml000419

    LECTURE 문제를 풀고 있는데요,

    typedef union string
    {
        char str[1001];
        unsigned short shtstr[500];
    } String;
    

    이런 식으로 공용체를 만들어서 shtstr을 하나씩 비교하는 방식으로 문제를 풀려고 했습니다.
    그런데 예제로 ab ba ac cb를 넣어 보니 ba ac cb ac(띄어쓰기는 임의로 했어요, 입력할 땐 제대로 넣었습니다.)가 나오더군요.
    아스키 코드에서

    문자 이진수
    a 0110 0001
    b 0110 0010
    c 0110 0011

    이므로

    shtstr[i] 문자 이진수 정수
    shtstr[0] ab 01100001 01100010 24930
    shtstr[1] ba 01100010 01100001 25185
    shtstr[2] ac 01100001 01100011 24931
    shtstr[3] cb 01100011 01100010 25442

    이렇게 될 것이라 예상했습니다.
    그런데 확인해 본 결과,

    shtstr[i] 문자 정수
    shtstr[0] ab 25185
    shtstr[1] ba 24930
    shtstr[2] ac 25441
    shtstr[3] cb 25187

    이렇게 나오더군요. 보아하니 1byte 크기의 이진수가 서로 바뀐 것 같은데, 왜 이렇게 됐는지 모르겠네요. 제가 잘못 이해하는 부분이 있는 건가요?


    8년 전
2개의 댓글이 있습니다.
  • maczniak
    maczniak

    문제는 읽어보지 않았지만, little endian 때문이 아닐까요?


    8년 전 link
  • wogml000419
    wogml000419

    maczniak// 그렇 것 같네요, cpu마다 방식이 다르군요. 답변 감사합니다!


    8년 전 link
  • 정회원 권한이 있어야 커멘트를 다실 수 있습니다. 정회원이 되시려면 온라인 저지에서 5문제 이상을 푸시고, 가입 후 7일 이상이 지나셔야 합니다. 현재 문제를 푸셨습니다.