C# 데이터 갖고 놀기

POSI·2022년 12월 2일
0

C#

목록 보기
2/6

해당 문서는 인프런 [C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part1: C# 기초 프로그래밍 입문을 듣고 정리한 필기 노트입니다.

  • 프로그램 = 데이터 + 로직

  • 변수 = 데이터를 저장하는 바구니
    // byte(1바이트 0~255), short(2바이트 -3만~3만), int(4바이트 -21억~21억), long(8바이트)
    // sbyte(1바이트 ~128~127), ushort(2바이트 0만~6만), uint(4바이트 0억~43억), ulong(8바이트)
    int hp;
    hp = 100
    
    Console.WriteLine("{0}", hp); // 출력
    • ID 계열은 long으로 사용하는 것이 좋음
    • bool : 참/거짓을 나타내는 값 (true/false) 1byte (1bit만 있어도 충분하지만 계산이 byte가 더 빠름)
    • 소수
      • 4 byte
        float f = 3.14f;
      • 8 byte
        double d = 3.14;
    • 문자 2 byte
      char c = 'D';
      string str = "Hello World";

  • 진수
    • 10진수 00 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 …
    • 2진수 0~1 0b00 0b01 0b10 0b11 0b100 …
    • 16진수 0~9 a b c d e f 0x00 0x01 0x02 .. 0x0F
    • 2진수 → 16진수 0b10001111 = 0x8F

  • 1byte = 8bit

  • 2의 보수 (음수 표현법)
    • 최상위 비트(맨 왼쪽)를 음수로 ex. 10000000 (2) = -128 (1 byte)
    • 음수 쉽게 구하는 법 양수에서 비트를 거꾸로 + 1 ex. -52 구하기 52 = 00110100 (2) → -52 = 11001011 (2) + 1 = 11001100 (2)

  • 형 변환
    1. 바구니 크기가 다른 경우

      int a = 1000;
      short b = (short) a; // 명시적 형 변환
      // 데이터가 날라갈 수 있음
      
      /*------------------------------------*/
      
      short b = 100;
      int a = b;
    2. 바구니 크기는 같긴 한데, 부호가 다를 경우

      byte c = 255;
      sbyte sb = (sbyte) c;
      // 서로 인식하는 숫자가 다름
      // overflow or underflow
    3. 소수

      float f = 3.1414f;
      double d = f;
      // 최대 인접한 값으로 변환되므로 완전히 정확한 숫자가 들어가지 않음

  • 데이터 연산
    int hp = 100;
    int level = 50;
    
    // + - / %
    hp = 2 * 100 + 1;
    hp += 1;
    
    // 반환 후 ++/--
    hp++;
    hp--;
    // 반환 전 ++/--
    ++hp;
    --hp;
    
    // < <= > >= == !=
    bool isAlive = hp > 0;
    bool isHighLevel = level >= 40;
    
    // && AND   || OR  ! NOT
    bool a = isAlive && isHighLevel;
    bool b = isAlive || isHighLevel;
    bool c = !isAlive;

  • 비트 연산
    int num = 1;
    
    // << >> &(and) |(or) ^(xor) ~(not)
    num = num << 3; // 왼쪽으로 3칸 밀기
    
    // 음수일 때 부호비트를 밀게 되면 밀린 후에 다시 부호비트를 원상태로 복귀 (부호 유지)
    • 쓰는 예시
      1. >> : id 만들 때 32 bit를 한번에 쓰지 않고 4 / 4 / 4 / 4 나눠서 다른 값을 넣을 때 shift 연산으로 쉽게 구현 가능

      2. ^ : xor 두 번하면 다시 원상 복귀 → id를 암호화하고 싶을 때 이용

        int id = 123;
        int key = 401;
        
        int a = id ^ key;
        int b = a ^ key; // b = id

  • 연산 우선순위 (헷갈리면 괄호를 쓰자)
    1. ++ --
      • / %
    2. << >>
    3. < >
    4. == !=
    5. &
    6. ^
    7. |
profile
고양이가 운영하는 테크블로그

0개의 댓글