πŸ“κ°œλ°œ 일지 (6)

우민·2023λ…„ 9μ›” 1일
0

개발 일지

λͺ©λ‘ 보기
6/9

λ‚΄ μ˜κ²¬μ— λŒ€ν•œ λ‚˜μ˜ 논리도 κΈ°μ–΅ν•˜μ§€ μ•Šκ³ μ„œλŠ”
λ‚΄ μ˜κ²¬μ„ κΈ°μ–΅ν•˜κΈ°κ°€ μ•„μ£Ό μ–΄λ ΅λ‹€.


"It is hard enough to remember my opinions, without also
remembering my reasons for them!"


- ν”„λ ˆλ“œλ¦¬νžˆ λ‹ˆμ²΄

λ¬ΈμžλΌλŠ” 것은 본래 μžμ‹ μ΄ 보고 λŠλ‚€ 것을 κΈ°λ‘ν•˜κΈ° μœ„ν•΄μ„œ λ§Œλ“€μ–΄μ‘Œλ‹€.
문자λ₯Ό μ•Œκ³  μžˆμŒμ—λ„ μƒκ°λ§Œμ„ ν•˜κ²Œ λœλ‹€λ©΄ 문자의 μ“°μž„λ„ μ‚¬λΌμ§€κ²Œ λœλ‹€.

πŸ“Œ Day - 6

[ Bitwise Operator ]

1. Type ( μ’…λ₯˜ )

  • Shift Operator ( μ‹œν”„νŠΈ μ—°μ‚°μž )
  • Btwise Operator ( λΉ„νŠΈ μ—°μ‚°μž )
"Shift μ—°μ‚°μž"

// Left Shift μ—°μ‚° ( << ) : μ§€μ •ν•œ 수만큼 λΉ„νŠΈλ“€μ„ μ „λΆ€ μ™Όμͺ½μœΌλ‘œ μ΄λ™μ‹œν‚΄
// Right Shift μ—°μ‚° ( >> ) : μ§€μ •ν•œ 수만큼 λΉ„νŠΈλ“€μ„ μ „λΆ€ 였λ₯Έμͺ½μœΌλ‘œ μ΄λ™μ‹œν‚΄

int byte = 8;

byte <<= 1;		// κ³±ν•˜κΈ° 2 : 16
byte >>= 1;		// λ‚˜λˆ„κΈ° 2 : 8

byte <<= 2;    	// κ³±ν•˜κΈ° 4 : 32
byte >>= 2;		// λ‚˜λˆ„κΈ° 4 : 8

byte <<= 3;  	// κ³±ν•˜κΈ° 8 : 64
byte >>= 3;		// λ‚˜λˆ„κΈ° 8 : 8

"Bitwise μ—°μ‚°μž"

// λΉ„νŠΈ AND (&) : λŒ€μ‘λ˜λŠ” λΉ„νŠΈκ°€ λͺ¨λ‘ 1이면 1을 λ°˜ν™˜ν•¨
// λΉ„νŠΈ OR (|) : λŒ€μ‘λ˜λŠ” λΉ„νŠΈ μ€‘μ—μ„œ ν•˜λ‚˜λΌλ„ 1이면 1을 λ°˜ν™˜ν•¨
// λΉ„νŠΈ NOT (~) : λΉ„νŠΈλ₯Ό 1이면 0으둜, 0이면 1둜 λ°˜μ „μ‹œν‚΄
// λΉ„νŠΈ XOR (^) : λŒ€μ‘λ˜λŠ” λΉ„νŠΈκ°€ μ„œλ‘œ λ‹€λ₯΄λ©΄ 1을 λ°˜ν™˜ν•¨

[ "λΉ„νŠΈ μ—°μ‚° μžμ„Ένžˆ 보기" ]



[ Preprocessor ]

1. Type ( μ’…λ₯˜ )

#include
// λ‹€λ₯Έ 파일의 λ‚΄μš©μ„ ν˜„μž¬ νŒŒμΌμ— ν¬ν•¨μ‹œν‚€κ³ , 주둜 헀더 νŒŒμΌμ„ 포함할 λ•Œ μ‚¬μš©

#define
// 맀크둜λ₯Ό μ •μ˜ν•œλ‹€. λ§€ν¬λ‘œλŠ” νŠΉμ •ν•œ κ°’μ΄λ‚˜ μ½”λ“œ 블둝을 λŒ€μ²΄ν•˜λŠ”λ° μ‚¬μš©

#ifdef, #ifndef, #else, #endif
// 쑰건뢀 μ»΄νŒŒμΌμ„ μœ„ν•œ μ§€μ‹œλ¬ΈμœΌλ‘œ νŠΉμ • 쑰건이 참일 λ•Œ μ½”λ“œλ₯Ό μ»΄νŒŒμΌν•˜κ±°λ‚˜ λ¬΄μ‹œν•¨

#pragma
// νŒŒμΌλŸ¬μ—κ²Œ νŠΉλ³„ν•œ μ§€μ‹œλ₯Ό μ œκ³΅ν•˜κ±°λ‚˜ 컴파일러 νŠΉμ„±μ„ μ„€μ •ν•œλ‹€. 
   μ»΄νŒŒμΌλŸ¬λ§ˆλ‹€ λ‹€λ₯Ό 수 μžˆλŠ” μΆ”κ°€ κΈ°λŠ₯을 ν™œμš©ν•  λ•Œ μ‚¬μš©

#error
// 컴파일 μ‹œ μ—λŸ¬ λ©”μ‹œμ§€λ₯Ό 좜λ ₯ν•˜κ³  μ»΄νŒŒμΌμ„ 쀑단

#warning
// 컴파일 μ‹œ κ²½κ³  λ©”μ‹œμ§€λ₯Ό 좜λ ₯ν•˜μ§€λ§Œ μ»΄νŒŒμΌμ„ 계속 μ§„ν–‰

2. #Define

  • μ½”λ“œ 가독성 증가
  • μœ μ§€λ³΄μˆ˜ νš¨μœ¨μ„± 증가
#define HUNGRY   0x001
#define THIRSTY  0x002
#define TIRED    0x004
#define FIRE     0x008

#define	COLD     0x010  
#define	POISON1  0x020
#define	POISON2  0x040
#define	POISON3  0x080

#define	POISON4  0x100
#define	POISON5  0x200
#define	POISON6  0x400
#define	POISON7  0x800	

...

// κ²Œμž„ 캐릭터 μƒνƒœμ°½ κ΅¬ν˜„

unsigned int iStatus = 0;	// (1) κΈ°λ³Έ μƒνƒœ 

iStatus |= HUNGRY; 			// (2) λ°°κ³ ν”” μƒνƒœ λΆ€μ—¬
iStatus |= TIRED;			// (3) ν”Όλ‘œ μƒνƒœ λΆ€μ—¬


if (iStatus & HUNGRY)		// (4) μƒνƒœ 확인
{
	//ex) 3s, -5HP
}


iStatus &= ~HUNGRY  		// (5) νŠΉμ • λΉ„νŠΈ 제거

EX)

(1)00000000

↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓

(2)00000001

↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓

(3)00000101

↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓

(3)00000101
(4)00000001

β†’ μƒνƒœ 확인 ν›„ λͺ…λ Ή

↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓

(5)00000101
(5)11111110

↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓

(5)00000100


πŸ’¬ COMMENT

λ³΄μ‹œλŠ” 뢄이 λ§Žμ§€λŠ” μ•Šκ² μ§€λ§Œ ν˜Ήμ‹œ 잘λͺ»λœ 정보가 있으면 μ•Œλ €μ£Όμ‹œλ©΄ κ°μ‚¬ν•˜κ² μŠ΅λ‹ˆλ‹€.

profile
ν•™μŠ΅ν•˜λŠ” 쀑

0개의 λŒ“κΈ€