16์ง„์ˆ˜๋ฅผ 2์ง„์ˆ˜๋กœ ๋ฐ”๊พธ๊ธฐ


Entry ๋ธ”๋ก ์ค‘์— ๋„ํŠธ ๋งคํŠธ๋ฆญ์Šค ์„ผ์„œ๋ฅผ ๊ตฌํ˜„์„ ์œ„ํ•ด์„  16์ง„์ˆ˜๋ฅผ 2์ง„์ˆ˜๋กœ ๋ณ€ํ™˜ํ•ด์•ผํ•œ๋‹ค. ์‚ฌ์šฉ์ž๊ฐ€ ๋„ํŠธ ๋งคํŠธ๋ฆญ์Šค์˜ ํ–‰๋งˆ๋‹ค ๋ธ”๋ก์— ๋ฐ”์ด๋„ˆ๋ฆฌ ๊ฐ’์„ ์ž…๋ ฅํ•˜๋Š” ๊ฑด ๋ถˆํŽธํ•˜๋‹ค๊ณ  ๋Š๋‚„ ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์—, 16์ง„์ˆ˜ ํ•œ์ค„์„ ์ž…๋ ฅํ•˜๋ฉด ํŽŒ์›จ์–ด์—์„œ 2์ง„์ˆ˜๋กœ ๋ณ€๊ฒฝํ•˜์—ฌ ๋งคํŠธ๋ฆญ์Šค์— ์ถœ๋ ฅํ•˜๋Š” ๋ฐฉ์‹์„ ์ƒ๊ฐํ–ˆ๋‹ค. ๋„ํŠธ๋งคํŠธ๋ฆญ์Šค ๋ณ€ํ™˜ ์‚ฌ์ดํŠธ๋Š” ์—ฌ๊ธฐ๋ฅผ ์ด์šฉํ•˜์˜€๋‹ค. 16์ง„์ˆ˜์™€ 2์ง„์ˆ˜ ๊ฒฐ๊ณผ ๊ฐ’ ๋ชจ๋‘๋ฅผ ๋ณด์—ฌ์ฃผ์–ด ์ฐธ๊ณ ํ•˜๊ธฐ์— ์ข‹๋‹ค.


์ฒ˜์Œ์—” ์Šค์œ„์น˜ ๋ฌธ์„ ์ด์šฉํ•ด ์ผ€์ด์Šค๋ฅผ ๋‚˜๋ˆ„๋Š” ๋ฐฉ๋ฒ•์„ ์ƒ๊ฐํ•ด๋ณด์•˜๋‹ค.

switch (hexdec[i]) {
      case '0':
        if (i % 2 == 0) { //์ง์ˆ˜์ธ ๊ฒฝ์šฐ
          m[index] = B0000;
        } else { //ํ™€์ˆ˜์ธ ๊ฒฝ์šฐ(๋ถ™์ด๊ธฐ)
          m[index] = m[index] << 4;
          m[index] += B0000;
        }
        break;

์ด๋Ÿฐ ์‹์œผ๋กœ 16๊ฐ€์ง€ ์ผ€์ด์Šค๋ฅผ ๋‚˜๋ˆ„์–ด shift์—ฐ์‚ฐ์œผ๋กœ ์ž๋ฆฌ์ˆ˜๋ฅผ ์˜ฎ๊ธฐ๊ณ  ๋ง๋ถ™์ด๋Š” ๋ฐฉ๋ฒ•์„ ์ƒ๊ฐํ–ˆ์—ˆ๋Š”๋ฐ shift์—ฐ์‚ฐ์„ ์‚ฌ์šฉํ•˜๋ฉด ๋” ์‰ฝ๊ฒŒ ํ•ด๊ฒฐ๋  ๋ฌธ์ œ์˜€๋‹ค.

  uint64_t image = 0xff001c183ce39dff;

  for (int i = 0; i < 8; i++) {
    byte row = (image >> i * 8)&0xFF;
    for (int j = 0; j < 8; j++)
    {
      lcjikko->setLed(0, i, j, bitRead(row, j));
    }
  }

uint64_t๋Š” ์ž๋ฃŒํ˜•์ด ์–‘์ˆ˜์ธ 64๋น„ํŠธ๋ฅผ ๋œปํ•œ๋‹ค. 0x๊ฐ€ ์•ž์— ๋ถ™์œผ๋ฉด 16์ง„์ˆ˜๋ฅผ ๋œปํ•œ๋‹ค. ์ฐธ๊ณ ๋กœ B๊ฐ€ ์•ž์— ๋ถ™์œผ๋ฉด 2์ง„์ˆ˜์ด๋‹ค. byte๋Š” 0-255์˜ 8๋น„ํŠธ ๋ถ€ํ˜ธ์—†๋Š” ์ˆซ์ž๊ฐ’์„ ๋‚˜ํƒ€๋‚ด๋Š” ์ž๋ฃŒํ˜•์ด๋‹ค.

๋”ฐ๋ผ์„œ byte row=(image >> i *8);์—์„œ๋Š” 8์ž๋ฆฌ์”ฉ ๋น„ํŠธ shift ์—ฐ์‚ฐ์„ ํ†ตํ•ด row์— ์ €์žฅ๋˜๋ฉฐ, row์˜ ํฌ๊ธฐ๋Š” 8๋น„ํŠธ์ด๊ธฐ ๋•Œ๋ฌธ์— ๋„ํŠธ ๋งคํŠธ๋ฆญ์Šค์— ํ•œ ์ค„์”ฉ ์ถœ๋ ฅํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์ด๋‹ค. ์ž˜ ์ž˜๋ ธ๋Š”์ง€ ํ™•์ธํ•˜๊ณ  ์‹ถ์œผ๋ฉด Serial.print(row,BIN)์„ ํ†ตํ•ด ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค. &0xFF์—ฐ์‚ฐ์„ ํ•˜๋Š” ์ด์œ ๋Š” ๋’ค์˜ 8๋น„ํŠธ๋งŒ ๋‚จ๊ธฐ๊ธฐ ์œ„ํ•จ์ธ๋ฐ ์ด๋ฏธ byte์˜ ์ž๋ฃŒํ˜• ๋•Œ๋ฌธ์— 8๋น„ํŠธ๋งŒ ์งค๋ฆฌ๊ธฐ ๋•Œ๋ฌธ์— ์—†์–ด๋„ ๋ฌธ์ œ๋Š” ์—†๋‹ค. row์˜ ์ž๋ฃŒํ˜•์ด int๋ผ๋ฉด &0xFF์—ฐ์‚ฐ์ด ํ•„์š”ํ•˜๋‹ค.