ÃÑ ÆäÀÌÁö ¼ö : 3224
![]()
|
Facebook Joinc ±×·ì
Joinc QA »çÀÌÆ®
![]()
Tweet
joinc´Â Firefox¿Í chrome¿¡¼ Å×½ºÆ® Çß½À´Ï´Ù. IE¿¡¼´Â Å×À̺íÀÌ ±úÁö°Å³ª À̹ÌÁö°¡ º¸ÀÌÁö ¾ÊÀ» ¼ö ÀÖ½À´Ï´Ù. ƯÈ÷ ±¸±Û DocsÀ̹ÌÁöÀÇ °æ¿ì ¿¢¹Úó¸®µÉ ¼ö ÀÖ½À´Ï´Ù. 1 Big-Endian°ú Little-Endian
ÀÛ¼ºÀÚ: mwyun (¸Û)
´ÙÀ½ ¸µÅ©´Â Endian¿¡ ´ëÇÑ ÀÚ·áÀ̹ǷΠ¸ÕÀú º¸½Ã±â ¹Ù¸³´Ï´Ù.
http://www.joinc.co.kr/modules.php?name=News&file=article&sid=79
http://terms.co.kr/big-endian.htm
http://docs.hp.com/ko/5990-8178/ch02s10.html Á¤¸®¸¦ ÇÏÀÚ¸é ºò ¿£µð¾È°ú ¸®Æ² ¿£µð¾ÈÀº ÄÄÇ»ÅÍ ¸Þ¸ð¸®¿¡ ÀúÀåµÈ ¹ÙÀÌÆ®µéÀÇ ¼ø¼¸¦ ¼³¸íÇÏ´Â ¿ëÀÌÀ̸ç, Á¤¼öÇü µ¥ÀÌÅ͸¦ ÀúÀåÇϸç,
ºò ¿£µð¾ÈÀº ¸Þ¸ð¸®ÀÇ ³·Àº ¹øÁö¿¡ Å« ÂÊÀ» ¸ÕÀú ÀúÀåµÇ´Â ¼ø¼À̸ç, ¸®Æ² ¿£µð¾ÈÀº ÀÛÀº ÂÊÀ» ¸ÕÀú ÀúÀåÇÏ´Â ¹æ½ÄÀÔ´Ï´Ù.
Å« ÂÊ: »óÀ§¹ÙÀÌÆ®ÀÌ¸ç ¹ÙÀÌÆ®ÀÇ ¿¿¡¼ °¡Àå Å« °ª
ÀÛÀº ÂÊ: ÇÏÀ§¹ÙÀÌÆ®ÀÌ¸ç ¹ÙÀÌÆ®ÀÇ ¿¿¡¼ °¡Àå ÀÛÀº °ª
2¹ÙÀÌÆ® Á¤¼öÀÎ °æ¿ì Á¤¼ö 1234¸¦ ÀúÀåÇϸé 16Áø¼ö 0x04d2ÀÌ°í »óÀ§¹ÙÀÌÆ®°ªÀº 04À̰í ÇÏÀ§¹ÙÀÌÆ®°ªÀº d2ÀÔ´Ï´Ù.
À̶§ ºò ¿£µð¾È°ú ¸®Æ² ¿£µð¾ÈÀº °¢°¢ ´ÙÀ½°ú °°ÀÌ ÀúÀåµË´Ï´Ù.
ºò ¿£µð¾È
+- 0byte -+- 1byte -+
| | |
+---------+---------+
| 04 | d2 |
+---------+---------+
^ ^
| |
¸Þ¸ð¸®ÀÇ ³·Àº ¹øÁö ¸Þ¸ð¸®ÀÇ ³ôÀº ¹øÁö
¸®Æ² ¿£µð¾È
+- 0byte -+- 1byte -+
| | |
+---------+---------+
| d2 | 04 |
+---------+---------+
^ ^
| |
¸Þ¸ð¸®ÀÇ ³·Àº ¹øÁö ¸Þ¸ð¸®ÀÇ ³ôÀº ¹øÁö
4¹ÙÀÌÆ® Á¤¼öÀÎ °æ¿ì Á¤¼ö 123456789¸¦ ÀúÀåÇϸé 16Áø¼ö 0x075bcd15ÀÌ°í »óÀ§¹ÙÀÌÆ®°ªÀº 07À̰í ÇÏÀ§¹ÙÀÌÆ®°ªÀº 15ÀÔ´Ï´Ù.
À̶§ ºò ¿£µð¾È°ú ¸®Æ² ¿£µð¾ÈÀº °¢°¢ ´ÙÀ½°ú °°ÀÌ ÀúÀåµË´Ï´Ù.
»óÀ§ ¹ÙÀÌÆ® 07ºÎÅÍ ÇÏÀ§ ¹ÙÀÌÆ® 15±îÁö ÀúÀåÇÑ´Ù.
ÀúÀåµÇ´Â ¹ÙÀÌÆ® ¼ø¼: 07 5b cd 15
->
0x075bcd15
ºò ¿£µð¾È
+- 0byte -+- 1byte -+- 2byte -+- 3byte -+
| | | | |
+---------+---------+---------+---------+
| 07 | 5b | cd | 15 |
+---------+---------+---------+---------+
^ ^
| |
¸Þ¸ð¸®ÀÇ ³·Àº ¹øÁö ¸Þ¸ð¸®ÀÇ ³ôÀº ¹øÁö
ÇÏÀ§¹ÙÀÌÆ® 15ºÎÅÍ »óÀ§ ¹ÙÀÌÆ® 07±îÁö ÀúÀåÇÑ´Ù.
ÀúÀåµÇ´Â ¹ÙÀÌÆ® ¼ø¼: 15 cd 5b 07
<-
0x075bcd15
¸®Æ² ¿£µð¾È
+- 0byte -+- 1byte -+- 2byte -+- 3byte -+
| | | | |
+---------+---------+---------+---------+
| 15 | cd | 5b | 07 |
+---------+---------+---------+---------+
^ ^
| |
¸Þ¸ð¸®ÀÇ ³·Àº ¹øÁö ¸Þ¸ð¸®ÀÇ ³ôÀº ¹øÁö
i386 GNU ¸®´ª½º¿¡¼ ½ÇÇàÇÑ ´ÙÀ½ÀÇ ¼Ò½º ÄÚµå·Î À§ÀÇ °á°ú¸¦ È®ÀÎÇØº¼ ¼ö ÀÖ½À´Ï´Ù. 1.1 ¼Ò½ºÄÚµå 1#include <stdio.h> #include <netinet/in.h> int main(int argc, char **argv) { int data = 1234; int data2 = 123456789; int data3; printf("%04x\n", data); printf("%04x\n", data2); printf("network byte order 2byte: 0x%04x\n", htons(data)); printf("network byte order 4byte: 0x%08x\n", htonl(data2)); return 0; } 1.2 ½ÇÇà°á°ú 1[mwyun@iokorea project]$ ./endian2 04d2 75bcd15 network byte order 2byte: 0xd204 network byte order 4byte: 0x15cd5b07
¹¯°í ´äÇϱâÀÇ blueyear77´ÔÀÇ ´ÙÀ½ Áú¹®¿¡ ´ëÇÑ ´ëº¯ÀÔ´Ï´Ù. Å×½ºÆ®ÇÑ ½ÇÇà °á°ú¸¦ ¿Ã¸³´Ï´Ù.
http://www.joinc.co.kr/modules.php?op=modload&name=Forum&file=viewtopic&topic=30943&forum=1&2 1.3 ¼Ò½ºÄÚµå 2#include <stdio.h>
typedef struct __bitmemory {
unsigned int bit1: 1; // ÇÑ ºñÆ®¸¸ ¾²°Ú´Ù´Â ÀǹÌ
unsigned int bit2: 1;
unsigned int bit3: 1;
unsigned int bit4: 1;
unsigned int bit5: 1;
unsigned int bit6: 1;
unsigned int bit7: 1;
unsigned int bit8: 1;
unsigned int bit9: 1;
unsigned int bit10: 1;
unsigned int bit11: 1;
unsigned int bit12: 1;
unsigned int bit13: 1;
unsigned int bit14: 1;
unsigned int bit15: 1;
unsigned int bit16: 1;
unsigned int bit17: 1;
unsigned int bit18: 1;
unsigned int bit19: 1;
unsigned int bit20: 1;
unsigned int bit21: 1;
unsigned int bit22: 1;
unsigned int bit23: 1;
unsigned int bit24: 1;
unsigned int bit25: 1;
unsigned int bit26: 1;
unsigned int bit27: 1;
unsigned int bit28: 1;
unsigned int bit29: 1;
unsigned int bit30: 1;
unsigned int bit31: 1;
unsigned int bit32: 1;
} bitmemory;
void printbitfield(unsigned int a);
int main(int argc, char **argv)
{
unsigned int a = 0x11223344;
char *ptr = &a;
int i;
printf("1byte print: %x %x %x %x\n",
*ptr, *(ptr+1), *(ptr+2), *(ptr+3));
for (i = 31; i >= 0; i--)
{
printf("%d", (a >> i) & (unsigned int)0x01);
if (i % 4 == 0)
printf(" ");
}
printf("\n");
printbitfield(a);
return 0;
}
void printbitfield(unsigned int a)
{
bitmemory aa;
memset(&aa, 0x00, sizeof(aa));
memcpy(&aa, &a, 4);
printf("%d", aa.bit1);
printf("%d", aa.bit2);
printf("%d", aa.bit3);
printf("%d", aa.bit4);
printf(" ");
printf("%d", aa.bit5);
printf("%d", aa.bit6);
printf("%d", aa.bit7);
printf("%d", aa.bit8);
printf(" ");
printf("%d", aa.bit9);
printf("%d", aa.bit10);
printf("%d", aa.bit11);
printf("%d", aa.bit12);
printf(" ");
printf("%d", aa.bit13);
printf("%d", aa.bit14);
printf("%d", aa.bit15);
printf("%d", aa.bit16);
printf(" ");
printf("%d", aa.bit17);
printf("%d", aa.bit18);
printf("%d", aa.bit19);
printf("%d", aa.bit20);
printf(" ");
printf("%d", aa.bit21);
printf("%d", aa.bit22);
printf("%d", aa.bit23);
printf("%d", aa.bit24);
printf(" ");
printf("%d", aa.bit25);
printf("%d", aa.bit26);
printf("%d", aa.bit27);
printf("%d", aa.bit28);
printf(" ");
printf("%d", aa.bit29);
printf("%d", aa.bit30);
printf("%d", aa.bit31);
printf("%d", aa.bit32);
printf("\n");
}
1.4 ½ÇÇà°á°ú 2[mwyun@iokorea project]$ ./endian 1byte print: 44 33 22 11 0001 0001 0010 0010 0011 0011 0100 0100 0010 0010 1100 1100 0100 0100 1000 1000 1.4.1 ù¹øÂ° °á°ú ºÐ¼®1byte print: 44 33 22 11INTEL CPUÀº ¸®Æ² ¿£µð¾È ¹æ½ÄÀ̹ǷΠÁ¤»óÀûÀÎ °á°úÀÔ´Ï´Ù. 1.4.2 µÎ¹øÂ° °á°ú ºÐ¼®0001 0001 0010 0010 0011 0011 0100 0100¸Þ¸ð¸®¿¡ ÀúÀåµÈ ¹æ½ÄÀÌ Àú·¸´Ù´Â °ÍÀÌ¸ç ½ÇÁ¦ ¿Ã¹Ù¸¥ °ª 11223344¿¡¼ ÃÖ»óÀ§ ºñÆ®ºÎÅÍ Çϳª¾¿ Ãâ·ÂÇÏ¿´À¸¹Ç·Î À§¿Í °°ÀÌ Ãâ·ÂµÇ´Â °Ç Á¤»óÀÔ´Ï´Ù. 1.4.3 ¼¼¹øÂ° °á°ú ºÐ¼®0010 0010 1100 1100 0100 0100 1000 1000
ÀÇ¿ÜÀÇ °á°í°¡ ³ª¿Ô³×¿ä ^^;
ÀÏ´Ü À§ÀÇ 2Áø¼ö °ªÀ» 16Áø¼ö·Î º¯È¯Çϸé 22cc4488·Î ÀüÇô ÀÌ»óÇÑ °ªÀÌ ³ª¿Ô½À´Ï´Ù.
¿Ö ±×·²±î¿©?
¾Æ¸¶µµ ºñÆ® Çʵ带 ½á¼ ½ÇÁ¦·Î ¸Þ¸ð¸®¿¡ ÀúÀåµÇ´Â ¹æ½ÄÀÌ ´Þ¶ó¼ ±×·²²¨ °°½À´Ï´Ù.
ÂüÁ¶»çÀÌÆ® ±¸Á¶Ã¼ ÀÚüÀÇ Å©±â´Â ¸ðµç ºñÆ® ¸â¹öÀÇ ÃÑ ºñÆ®¼ö¿Í °°À¸¸ç ÂüÁ¶»çÀÌÆ®ÀÇ ±×¸²À» º¸¸é aa.bitmemory2.bit1~aa.bitmemory2.bit32¼øÀ¸·Î ÃÖÇϺñÆ®ºÎÅÍ ÃÖ»óºñÆ®±îÁö ¼ø¼´ë·Î ÀúÀåµË´Ï´Ù.
±×·±µ¥ ´ÔÀº bit1ºÎÅÍ Ãâ·ÂÇÏ¿´À¸¹Ç·Î °á°ú°¡ °Å²Ù·Î ÂïÈ÷°Ô µÈ°Ì´Ï´Ù.
¹ÙÀÌÆ®¿À» ¿ª¼øÀ¸·Î Ãâ·ÂÇϸé 0001 0001 0010 0010 0011 0011 0100 0100À¸·Î ¿øÇÏ´Â ¿Ã¹Ù¸¥ °á°ú°¡ ³ª¿À°Ô µË´Ï´Ù.
´ÔÀÌ ºñÆ® Çʵ尡 ¾î¶»°Ô ÀúÀåµÇ´ÂÁö À߸ø ÀÌÇØÇѵí ÇÕ´Ï´Ù.
ÀÚ¼¼ÇÑ°Ç ¼Ò½ºÄÚµå 3¸¦ ÂüÁ¶Çϼ¼¿ä! 1.5 ¼Ò½ºÄÚµå 3#include <stdio.h>
typedef struct __bitmemory {
unsigned int bit1: 1;
unsigned int bit2: 1;
unsigned int bit3: 1;
unsigned int bit4: 1;
unsigned int bit5: 1;
unsigned int bit6: 1;
unsigned int bit7: 1;
unsigned int bit8: 1;
unsigned int bit9: 1;
unsigned int bit10: 1;
unsigned int bit11: 1;
unsigned int bit12: 1;
unsigned int bit13: 1;
unsigned int bit14: 1;
unsigned int bit15: 1;
unsigned int bit16: 1;
unsigned int bit17: 1;
unsigned int bit18: 1;
unsigned int bit19: 1;
unsigned int bit20: 1;
unsigned int bit21: 1;
unsigned int bit22: 1;
unsigned int bit23: 1;
unsigned int bit24: 1;
unsigned int bit25: 1;
unsigned int bit26: 1;
unsigned int bit27: 1;
unsigned int bit28: 1;
unsigned int bit29: 1;
unsigned int bit30: 1;
unsigned int bit31: 1;
unsigned int bit32: 1;
} bitmemory;
typedef union __uint32 {
unsigned int bitmemory1;
struct __bitmemory bitmemory2;
} uint32;
void printuint32_1(unsigned int a);
void printuint32_2(unsigned int a);
int main(int argc, char **argv)
{
unsigned int a = 0x11223344;
printuint32_1(a); // <- À߸øµÈ Ãâ·Â
printuint32_2(a); // <- ¿Ã¹Ù¸¥ Ãâ·Â
return 0;
}
void printuint32_1(unsigned int a)
{
uint32 aa;
aa.bitmemory1 = a;
printf("%d", aa.bitmemory2.bit1);
printf("%d", aa.bitmemory2.bit2);
printf("%d", aa.bitmemory2.bit3);
printf("%d", aa.bitmemory2.bit4);
printf(" ");
printf("%d", aa.bitmemory2.bit5);
printf("%d", aa.bitmemory2.bit6);
printf("%d", aa.bitmemory2.bit7);
printf("%d", aa.bitmemory2.bit8);
printf(" ");
printf("%d", aa.bitmemory2.bit9);
printf("%d", aa.bitmemory2.bit10);
printf("%d", aa.bitmemory2.bit11);
printf("%d", aa.bitmemory2.bit12);
printf(" ");
printf("%d", aa.bitmemory2.bit13);
printf("%d", aa.bitmemory2.bit14);
printf("%d", aa.bitmemory2.bit15);
printf("%d", aa.bitmemory2.bit16);
printf(" ");
printf("%d", aa.bitmemory2.bit17);
printf("%d", aa.bitmemory2.bit18);
printf("%d", aa.bitmemory2.bit19);
printf("%d", aa.bitmemory2.bit20);
printf(" ");
printf("%d", aa.bitmemory2.bit21);
printf("%d", aa.bitmemory2.bit22);
printf("%d", aa.bitmemory2.bit23);
printf("%d", aa.bitmemory2.bit24);
printf(" ");
printf("%d", aa.bitmemory2.bit25);
printf("%d", aa.bitmemory2.bit26);
printf("%d", aa.bitmemory2.bit27);
printf("%d", aa.bitmemory2.bit28);
printf(" ");
printf("%d", aa.bitmemory2.bit29);
printf("%d", aa.bitmemory2.bit30);
printf("%d", aa.bitmemory2.bit31);
printf("%d", aa.bitmemory2.bit32);
printf("\n");
printf("0x%08x\n", aa.bitmemory1);
}
void printuint32_2(unsigned int a)
{
uint32 aa;
aa.bitmemory1 = a;
printf("%d", aa.bitmemory2.bit32);
printf("%d", aa.bitmemory2.bit31);
printf("%d", aa.bitmemory2.bit30);
printf("%d", aa.bitmemory2.bit29);
printf(" ");
printf("%d", aa.bitmemory2.bit28);
printf("%d", aa.bitmemory2.bit27);
printf("%d", aa.bitmemory2.bit26);
printf("%d", aa.bitmemory2.bit25);
printf(" ");
printf("%d", aa.bitmemory2.bit25);
printf("%d", aa.bitmemory2.bit24);
printf("%d", aa.bitmemory2.bit22);
printf("%d", aa.bitmemory2.bit21);
printf(" ");
printf("%d", aa.bitmemory2.bit20);
printf("%d", aa.bitmemory2.bit19);
printf("%d", aa.bitmemory2.bit18);
printf("%d", aa.bitmemory2.bit17);
printf(" ");
printf("%d", aa.bitmemory2.bit16);
printf("%d", aa.bitmemory2.bit15);
printf("%d", aa.bitmemory2.bit14);
printf("%d", aa.bitmemory2.bit13);
printf(" ");
printf("%d", aa.bitmemory2.bit12);
printf("%d", aa.bitmemory2.bit11);
printf("%d", aa.bitmemory2.bit10);
printf("%d", aa.bitmemory2.bit9);
printf(" ");
printf("%d", aa.bitmemory2.bit8);
printf("%d", aa.bitmemory2.bit7);
printf("%d", aa.bitmemory2.bit6);
printf("%d", aa.bitmemory2.bit5);
printf(" ");
printf("%d", aa.bitmemory2.bit4);
printf("%d", aa.bitmemory2.bit3);
printf("%d", aa.bitmemory2.bit2);
printf("%d", aa.bitmemory2.bit1);
printf("\n");
printf("0x%08x\n", aa.bitmemory1);
}
1.6 ½ÇÇà°á°ú 3[mwyun@iokorea project]$ ./endian3 0010 0010 1100 1100 0100 0100 1000 1000 <- À߸øµÈ Ãâ·Â 0x11223344 0001 0001 0010 0010 0011 0011 0100 0100 <- ¿Ã¹Ù¸¥ Ãâ·Â 0x11223344 |
|
|
|
EmailÀ» ±âÀÔÇϸé, ´ñ±ÛÀÌ ¸ÞÀÏ·Î Àü´ÞµË´Ï´Ù. |
|