250x250
Rainbow๐ŸŒˆCoder
My dev Note๐Ÿ“’
Rainbow๐ŸŒˆCoder
์ „์ฒด ๋ฐฉ๋ฌธ์ž
์˜ค๋Š˜
์–ด์ œ
  • ๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ (411)
    • ๊ณต์ง€์‚ฌํ•ญ (0)
    • Debugger (10)
      • Visual Studio Debugger (1)
      • Chrome DevTools (3)
      • Visual Studio Code Debugger (4)
      • eclipse (1)
      • intelliJ (1)
    • OOP (2)
      • OOP (2)
    • TypeScript (54)
      • ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ TypeScript (54)
    • Javascript (87)
      • Javascript (45)
      • Node.js (19)
      • React (5)
      • FE ๊ฐœ๋ฐœํ™˜๊ฒฝ์„ค์ • (3)
      • React์™€ Node ๊ฐ™์ด ๋•Œ๋ ค์žก๊ธฐ (6)
      • next.js (2)
      • pixi.js (7)
    • ๋งˆํฌ์—… (23)
      • Html & Css (23)
    • C# (80)
      • C# (12)
      • ์ด๊ฒƒ์ด C#์ด๋‹ค (68)
    • C++ (30)
      • c++ (27)
      • win api (3)
    • Unity (18)
      • Unity(๊ธฐ์ดˆ) (8)
      • Unity(C#์ค‘๊ธ‰) (5)
      • ์œ ๋‹ˆํ‹ฐ ํฌํ†ค(๋„คํŠธ์›Œํฌ) (4)
      • unity c# MyCode (1)
    • Java & Spring (29)
      • Java (11)
      • ์Šคํ”„๋ง (8)
      • Java Algorithm (9)
      • Javs Data Structures (1)
    • ์ž๋ฃŒ๊ตฌ์กฐ์™€ ์•Œ๊ณ ๋ฆฌ์ฆ˜ (15)
      • ์ž๋ฃŒ๊ตฌ์กฐ (5)
      • ์•Œ๊ณ ๋ฆฌ์ฆ˜ (10)
    • ํ˜•์ƒ๊ด€๋ฆฌ (15)
      • Git (11)
      • ์†Œ์ŠคํŠธ๋ฆฌ (3)
    • ๊ทธ๋ž˜ํ”ฝ์Šค (7)
      • WebGl (7)
    • AWS (3)
      • aws (3)
    • ๋ฆฌ๋ˆ…์Šค (5)
      • ๋ฆฌ๋ˆ…์Šค (5)
    • ์ฑ… ๋ฆฌ๋ทฐ (13)
      • ํด๋ฆฐ์ฝ”๋“œ(์ฑ…๋ฆฌ๋ทฐ) (3)
      • ์œ ์ง€๋ณด์ˆ˜๊ฐ€๋Šฅํ•œ์ฝ”๋”ฉ์˜๊ธฐ์ˆ C#ํŽธ(์ฑ…๋ฆฌ๋ทฐ) (1)
      • ๋ฆฌํŒฉํ† ๋ง(์ž๋ฐ”์Šคํฌ๋ฆฝํŠธํŒ) (9)
    • Server (2)
      • ๊ฒŒ์ž„ ์„œ๋ฒ„(๋„คํŠธ์›Œํฌ, ๋ฉ€ํ‹ฐ์“ฐ๋ ˆ๋“œ,OS) (2)
    • ์„ค๊ณ„, ์•„ํ‚คํ…์ณ (4)
    • ํŒŒ์ด์ฌ (5)
    • ๋””์ž์ธํŒจํ„ด (2)
    • mocha (2)
    • Jest (1)
    • Spine (1)
    • ์ธ๊ณต์ง€๋Šฅ (1)
      • ํ˜ผ์ž๊ณต๋ถ€ํ•˜๋Š”๋จธ์‹ ๋Ÿฌ๋‹+๋”ฅ๋Ÿฌ๋‹ (1)

๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

  • ํ™ˆ
  • ํƒœ๊ทธ
  • ๋ฐฉ๋ช…๋ก

๊ณต์ง€์‚ฌํ•ญ

์ธ๊ธฐ ๊ธ€

ํƒœ๊ทธ

  • ใ…ฃใ„ท
  • ์œ„์ž„
  • ์ปดํฌ์ง€์…˜
  • MySQL

์ตœ๊ทผ ๋Œ“๊ธ€

์ตœ๊ทผ ๊ธ€

ํ‹ฐ์Šคํ† ๋ฆฌ

hELLO ยท Designed By ์ •์ƒ์šฐ.
Rainbow๐ŸŒˆCoder

My dev Note๐Ÿ“’

12. ๋น„ํŠธ ์—ฐ์‚ฐ์ž
C#/์ด๊ฒƒ์ด C#์ด๋‹ค

12. ๋น„ํŠธ ์—ฐ์‚ฐ์ž

2022. 2. 8. 12:31
728x90

์ฐธ๊ณ ์˜์ƒ : https://youtu.be/VtqhZQP7T4c

1๋ฐ”์ดํŠธ๋Š” 8๋น„ํŠธ์ด๋‹ค. ๋ฐ์ดํ„ฐํ˜•์‹์˜ ํฌ๊ธฐ๋Š” ๋ชจ๋‘ '๋ฐ”์ดํŠธ'๋‹จ์œ„๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ๋‹ค.

 

๋น„ํŠธ ์ˆ˜์ค€์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€๊ณตํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ์ข…์ข… ์ƒ๊ธด๋‹ค. ๋น„ํŠธ ์—ฐ์‚ฐ์ž๋ฅผ ์ด๋ฅผ ์œ„ํ•œ ์—ฐ์‚ฐ์ž์ด๋‹ค.

 

1) ์‹œํ”„ํŠธ ์—ฐ์‚ฐ์ž : ๋น„ํŠธ๋ฅผ ์™ผ์ชฝ์ด๋‚˜ ์˜ค๋ฅธ์ชฝ์œผ๋กœ ์ด๋™์‹œํ‚ค๋Š” ์—ฐ์‚ฐ์ž

๋น„ํŠธ๋ฅผ ์ด๋™์‹œํ‚ฌ ๋•Œ๋Š” ๊ทœ์น™์ด ์žˆ๋‹ค.

๋ฐ€๋ ค์„œ ๋น ์ ธ๋‚˜์˜จ ๋น„ํŠธ๋Š” ๊ณผ๊ฐํ•˜๊ฒŒ ๋ฒ„๋ฆฐ๋‹ค.

์–‘์ˆ˜์— ๋Œ€ํ•œ ์‹œํ”„ํŠธ ์—ฐ์‚ฐ์ž๋Š” ๋น„๊ฒŒ๋œ ๋น„ํŠธ ๋งŒํผ 0์„ ์ฑ„์›Œ ๋„ฃ๋Š”๋‹ค.

์Œ์ˆ˜์— ๋Œ€ํ•œ ์‹œํ”„ํŠธ ์—ฐ์‚ฐ์ž๋Š” ๋น„๊ฒŒ๋œ ๋น„ํŠธ ๋งŒํผ 1์„ ์ฑ„์›Œ ๋„ฃ๋Š”๋‹ค.

            int a = 240;                  // 00000000 00000000 00001111 00000000
            int resultl_1 = a << 2; // 00000000 00000000 00111100 00000000
            int result_2 = a >> 2;  // 00000000 00000000 00000011 11000000

 

240(0000 0000 1111 0000)์„ ์™ผ์ชฝ์œผ๋กœ 2๋น„ํŠธ ์‹œํ”„ํŠธํ•œ ๊ฒฐ๊ณผ๋Š”

960(0000 0011 1100 0000)์ด๊ณ  ๋ฐ˜๋Œ€๋กœ 2๋น„ํŠธ ์‹œํ”„ํŠธํ•œ ๊ฒฐ๊ณผ๋Š” 60์ด์—ˆ๋‹ค.

์›๋ณธ ๋ฐ์ดํ„ฐ๋ฅผ a, ์˜ฎ๊ธด ๋น„ํŠธ ์ˆ˜๋Š” b๋ผ๊ณ  ํ•  ๋•Œ,

์™ผ์ชฝ ์‹œํ”„ํŠธ ์—ฐ์‚ฐ์„ ํ•˜๋ฉด aX2(b ์ œ๊ณฑ)์˜ ๊ฒฐ๊ณผ๊ฐ€,

์˜ค๋ฅธ์ชฝ ์‹œํ”„ํŠธ ์—ฐ์‚ฐ์„ ํ•˜๋ฉด a % 2(b ์ œ๊ณฑ)์˜ ๊ฒฐ๊ณผ๊ฐ€ ๋‚˜์˜จ๋‹ค.

(์ด ์ ์„ ์ด์šฉํ•ด์„œ ์‹œํ”„ํŠธ ์—ฐ์‚ฐ์€ ๊ณ ์†์˜ ๊ณฑ์…ˆ๊ณผ ๋‚˜๋ˆ—์…ˆ์„ ๊ตฌํ˜„ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋˜๊ธฐ๋„ ํ•˜๊ณ 

&์—ฐ์‚ฐ์ž, | ์—ฐ์‚ฐ์ž์™€ ํ•จ๊ป˜ byte์ฒ˜๋Ÿผ ์ž‘์€ ๋‹จ์œ„๋กœ ์ชผ๊ฐœ์ง„ ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค์‹œ ํ•˜๋‚˜์˜ int๋‚˜ long ํ˜•์‹์œผ๋กœ

์žฌ์กฐ๋ฆฝํ•˜๋Š”๋ฐ ์‚ฌ์šฉ๋˜๊ธฐ๋„ ํ•œ๋‹ค.)

using System;
using System.Collections;
using System.Collections.Generic;
using System.Globalization;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using static System.Console;

namespace Hello
{
    class MainApp
    {
        static void Main(string[] args)
        {
            WriteLine("Testing <<");
            int a = 1;
            WriteLine("a          : {0:D5} (0x{0:X8})", a);
            WriteLine("a << 1 : {0:D5} (0x{0:X8})",a<<1);
            WriteLine("a << 2 : {0:D5} (0x{0:X8})", a<<2);
            WriteLine("a << 5 : {0:D5} (0x{0:X8})", a<<5);

            WriteLine("Testing >>");
            int b = 255;
            WriteLine("a          : {0:D5} (0x{0:X8})", b);
            WriteLine("a >> 1 : {0:D5} (0x{0:X8})", b >> 1);
            WriteLine("a >> 2 : {0:D5} (0x{0:X8})", b >> 2);
            WriteLine("a >> 5 : {0:D5} (0x{0:X8})", b >> 5);

            WriteLine("Testing >>");
            int c = -255;
            WriteLine("a          : {0:D5} (0x{0:X8})", c);
            WriteLine("a >> 1 : {0:D5} (0x{0:X8})", c >> 1);
            WriteLine("a >> 2 : {0:D5} (0x{0:X8})", c >> 2);
            WriteLine("a >> 5 : {0:D5} (0x{0:X8})", c >> 5);
        }
    }
}

์ถœ๋ ฅ๊ฒฐ๊ณผ

Testing <<
a          : 00001 (0x00000001)
a << 1 : 00002 (0x00000002)
a << 2 : 00004 (0x00000004)
a << 5 : 00032 (0x00000020)
Testing >>
a          : 00255 (0x000000FF)
a >> 1 : 00127 (0x0000007F)
a >> 2 : 00063 (0x0000003F)
a >> 5 : 00007 (0x00000007)
Testing >>
a          : -00255 (0xFFFFFF01)
a >> 1 : -00128 (0xFFFFFF80)
a >> 2 : -00064 (0xFFFFFFC0)
a >> 5 : -00008 (0xFFFFFFF8)

1) ๋น„ํŠธ๋…ผ๋ฆฌ ์—ฐ์‚ฐ์ž : ๋น„ํŠธ ๋…ผ๋ฆฌ ์—ฐ์‚ฐ์ž๋Š” ์ •์ˆ˜ ํ˜•์‹์— ๋Œ€ํ•ด์„œ๋„ ๋…ผ๋ฆฌ ์—ฐ์‚ฐ์„ ํ•œ๋‹ค.

์šฐ๋ฆฌ๊ฐ€ ์‚ฌ์šฉํ•˜๋Š” ๋ฐ์ดํ„ฐ๋Š” 0๊ณผ 1๋กœ ์ด๋ฃจ์–ด์ง„๋‹ค.

int ํ˜•์‹ ๋ฐ์ดํ„ฐ๋Š” 4๋ฐ”์ดํŠธ ์ฆ‰ 32๊ฐœ์˜ ๋น„ํŠธ๋กœ ์ด๋ฃจ์–ด์ง€๊ณ 

long ํ˜•์‹ ๋ฐ์ดํ„ฐ๋Š” 64๊ฐœ์˜ ๋น„ํŠธ(8๋ฐ”์ดํŠธ)๋กœ ์ด๋ฃจ์–ด์ง„๋‹ค.

๋น„ํŠธ ๋…ผ๋ฆฌ ์—ฐ์‚ฐ์€ ์ด ๋น„ํŠธ ๋ฉ์–ด๋ฆฌ๋ฅผ ์ด๋ฃจ๊ณ  ์žˆ๋Š” ๊ฐ ๋น„ํŠธ์— ๋Œ€ํ•ด 1์€ ์ฐธ, 0์€ ๊ฑฐ์ง“์œผ๋กœ ํ•ด์„œ ๋…ผ๋ฆฌ ์—ฐ์‚ฐ์„ ํ•œ๋‹ค.

& ๋…ผ๋ฆฌ๊ณฑ(AND) ์—ฐ์‚ฐ์ž
| ๋…ผ๋ฆฌํ•ฉ(OR) ์—ฐ์‚ฐ์ž
^ ๋ฐฐํƒ€์  ๋…ผ๋ฆฌํ•ฉ(XOR) ์—ฐ์‚ฐ์ž
~ ๋ณด์ˆ˜(NOT) ์—ฐ์‚ฐ์ž : ํ”ผ์—ฐ์‚ฐ์ž์˜ ๋น„ํŠธ์— ๋Œ€ํ•ด 0์€ 1๋กœ, 1์€ 0์œผ๋กœ ๋ฐ˜์ „์‹œํ‚จ๋‹ค. ๋‹จํ•ญ ์—ฐ์‚ฐ์ž์ด๋‹ค.

9์™€ 10์˜ ๋…ผ๋ฆฌ๊ณฑ ๊ฒฐ๊ณผ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด 1000(10์ง„์ˆ˜๋กœ๋Š” 8์ด ๋œ๋‹ค.)

๋…ผ๋ฆฌ๊ณฑ์—์„œ๋Š” ๋‘˜ ์ค‘ ๋ชจ๋‘๊ฐ€ ์ฐธ(1)์ด์–ด์•ผ ๊ทธ ๊ฒฐ๊ณผ๊ฐ€ ์ฐธ(1)์ด๋‹ค.

9 :  1 0 0 1

     &&&&

10: 1 0 1 0

8 :  1 0 0 0 (๊ฒฐ๊ณผ)

int result = 9 & 10; //result๋Š” 8

9์™€ 10์˜ ๋…ผ๋ฆฌํ•ฉ ๊ฒฐ๊ณผ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด 1011(10์ง„์ˆ˜๋กœ๋Š” 11์ด ๋œ๋‹ค.)

๋…ผ๋ฆฌํ•ฉ์—์„œ๋Š” ๋‘˜ ์ค‘ ํ•˜๋‚˜๋ผ๋„ ์ฐธ(1)์ด๋ฉด ๊ทธ ๊ฒฐ๊ณผ๊ฐ€ ์ฐธ(1)์ด๋‹ค.

9 :  1 0 0 1

      |  | | |

10: 1 0 1 0

11 :1 0 1 1 (๊ฒฐ๊ณผ)

int result = 9 | 10; //result๋Š” 11

9์™€ 10์˜ ๋ฐฐํƒ€์  ๋…ผ๋ฆฌํ•ฉ ๊ฒฐ๊ณผ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด 0011(10์ง„์ˆ˜๋กœ๋Š” 3์ด ๋œ๋‹ค.)

๋ฐฐํƒ€์  ๋…ผ๋ฆฌํ•ฉ์—์„œ๋Š” ๋‘˜ ์ค‘ ๋ชจ๋‘๊ฐ€ ๋‹ฌ๋ผ์•ผ ๊ทธ ๊ฒฐ๊ณผ๊ฐ€ ์ฐธ(1)์ด๋‹ค.

๋‘๊ฐœ(๋‘ ํ”ผ์—ฐ์‚ฐ์ž์˜ ์ง„๋ฆฟ๊ฐ’)๊ฐ€ ๊ฐ™์œผ๋ฉด ๊ฑฐ์ง“(0)์ด๋‹ค.

9 :  1 0 0 1

     ^ ^ ^^

10: 1 0 1 0

3 :  0 0 1 1 (๊ฒฐ๊ณผ)

int result = 9 ^ 10; //result๋Š” 3

9์™€ 10์˜ ๋ณด์ˆ˜ ์—ฐ์‚ฐ ๊ฒฐ๊ณผ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด 0011(10์ง„์ˆ˜๋กœ๋Š” 3์ด ๋œ๋‹ค.)

~๋Š” ํ”ผ์—ฐ์‚ฐ์ž๊ฐ€ ํ•˜๋‚˜๋ฟ์ธ ๋‹จํ•ญ ์—ฐ์‚ฐ์ž๋กœ์„œ ๋น„ํŠธ๋ฅผ 0์—์„œ 1๋กœ,

1์—์„œ 0์œผ๋กœ ๋’ค์ง€๋Š” ๊ธฐ๋Šฅ์„ ํ•œ๋‹ค.

 

์˜ˆ๋ฅผ ๋“ค์–ด ํฌ๊ธฐ๊ฐ€ 32๋น„ํŠธ์ธ int ํ˜•์‹์˜ ๋ณ€์ˆ˜ a๋ฅผ ์„ ์–ธํ•˜๊ณ  255๋กœ ์ดˆ๊ธฐํ™”ํ•œ๋‹ค.

255๋ฅผ ๋‹ด์€ a์˜ ๋น„ํŠธ๋Š” 00000000 00000000 00000000 11111111์ด ๋˜๊ณ 

์ด ๋น„ํŠธ ํŒจํ„ด์—์„œ 0์„ 1๋กœ, 1์„ 0์œผ๋กœ ๋ฐ”๊พธ๋ฉด 11111111 11111111 11111111 00000000  ์ด ๋œ๋‹ค.

int a = 255;
int result = ~a; //result๋Š” -256

<์ตœ์ข… ์†Œ์Šค์ฝ”๋“œ>

using System;
using System.Collections;
using System.Collections.Generic;
using System.Globalization;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using static System.Console;

namespace Hello
{
    class MainApp
    {
        static void Main(string[] args)
        {
            int a = 9;
            int b = 10;

            WriteLine($"{a} & {b} : {a&b}"); //9 & 10 : 8
            WriteLine($"{a} | {b} : {a|b}"); //9 | 10 : 11
            WriteLine($"{a} ^ {b} : {a^b}"); //9 ^ 10 : 3

            int c = 255;
            WriteLine("{0}(0x{0:X8})",c,~c); //255(0x000000FF)
            WriteLine("{1}(0x{1:X8})", c, ~c); //-256(0xFFFFFF00)
        }
    }
}

 

<์ถœ๋ ฅ>

9 & 10 : 8
9 | 10 : 11
9 ^ 10 : 3
255(0x000000FF)
-256(0xFFFFFF00)
728x90

'C# > ์ด๊ฒƒ์ด C#์ด๋‹ค' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

14. ์ž…์ถœ๋ ฅ, ๋ถ„๊ธฐ๋ฌธ  (0) 2022.02.08
13. null ๋ณ‘ํ•ฉ ์—ฐ์‚ฐ์ž  (0) 2022.02.08
11. null ์กฐ๊ฑด๋ถ€ ์—ฐ์‚ฐ์ž  (0) 2022.02.08
10. ๋ฌธ์ž์—ด ๋‹ค๋ฃจ๊ธฐ  (0) 2022.02.07
9. ๊ณต์šฉ ํ˜•์‹ ์‹œ์Šคํ…œ  (0) 2022.02.07
    'C#/์ด๊ฒƒ์ด C#์ด๋‹ค' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
    • 14. ์ž…์ถœ๋ ฅ, ๋ถ„๊ธฐ๋ฌธ
    • 13. null ๋ณ‘ํ•ฉ ์—ฐ์‚ฐ์ž
    • 11. null ์กฐ๊ฑด๋ถ€ ์—ฐ์‚ฐ์ž
    • 10. ๋ฌธ์ž์—ด ๋‹ค๋ฃจ๊ธฐ
    Rainbow๐ŸŒˆCoder
    Rainbow๐ŸŒˆCoder
    ๋ชฐ๋ผ๋„ ๊ฒฐ๊ตญ์€ ์•„๋Š” ๊ฐœ๋ฐœ์ž, ๊ทธ๋Ÿฐ ์‚ฌ๋žŒ์ด ๋˜๊ธฐ ์œ„ํ•œ ๋งค์ผ์˜ ํ•œ๊ฑธ์Œ

    ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”