define 에 쓰인 | 와 << 8 의미를 모르겠어요.

kknd345의 이미지

#define MAKEWORD(b1,b2) ((WORD)(((BYTE)(b1)) | ((WORD)((BYTE)(b2))) << 8 ))

//////////////////////////

bool Packet:: Dispatch_Msg(char** ppmsg, DWORD* len)
{
if( pack_tail == 0 ) return false;
else
{
*ppmsg = pack_buf;
*len = (DWORD)MAKEWORD(*(*ppmsg+1),*(*ppmsg));
*ppmsg += 2;
return true;
};
};

현재 프로그램짜려는데 도움이 되는 코드를 구했는데 막히는 부분이 있어서 이렇게 질문 올립니다.

define 된 MAKEWORD 부분을 잘 이해를 못 하겠습니다.

| 와 << 8 이부분이 어떻게 해석이 되는지 모르겠습니다.

아시는 분 간략하게나마 설명 좀 해주세요

Prentice의 이미지

제가 C를 잘 몰라서 확실하지는 않지만 bitwise OR와 8bit shift 같습니다.

thyoo의 이미지

두 바이트로 Word를 만들고 있읍니다.

b2가 MSB이고
b1이 LSB로군요.

Word라고 하면 uP의 spec에 따라 다릅니다.
sizeof(int)라고 생각하면 대충 맞습니다.
http://en.wikipedia.org/wiki/Word_size#Table_of_word_sizes

하지만 인텔(MS)에서는 8086시절(16bit)에 쓰던 Word가 굳어져
32bit, 64bit Machine에서도 그대로 2byte를 가리키는 말로
쓰고 있읍니다.
Sun에서는 인텔하고는 다르게 부르더군요.
___________________________________
Less is More (Robert Browning)

___________________________________
Less is More (Robert Browning)

잠수오리배의 이미지

워드는
버스에서 한번에 전송가능한 데이터의 크기,
또, CPU의 산술 연산 장치가 한번에 처리 가능한 데이터의 크기
라고 알고 있는데요..
그렇다면, 워드라는것은 컴퓨터 구조마다 다 다르게 불리는게 맞는거 아니예요?
같은 인텔의 CPU에서도 32비트 머신에서라면 워드는 4바이트라고 해야되고,
64비트 머신에서라면 8바이트라고 해야 맞다고 생각하는데..
아닌가요???

bootmeta의 이미지

물론 잠수오리네님 말씀이 이론적으로는 맞기는 한데,
관습적으로 많이 쓰이는 표현으로써의 word는 16bit입니다.
dword는 32bit이고요.

딱히 모든 코드에서 100% 다 같은 크기로 정의 됬다고는 할 수는 없습니다.
아마도 본격적으로 pc프로그래밍이 시작된 16bit 머신들의 잔재 인듯.

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.