์ํ, ์๋ก๋ค์ด ์ค๋ , ์์์ค, ์ ํฌ์ค ๋ฑ๋ฑ
๊ธฐํ ์ก๋คํ ์ํ๋ ํ์์ ๊ธฐ๋กํ ๋
int8 istatus = 0; // ๋ณดํต์ ์ผ๋ก __int8 ์ธ๋ ๊ท์ฐฎ์ผ๋ ์๋ต
ํน์
bool bpoison = false;
์ด๋ฐ์์ผ๋ก ๋ง์ด ํ ๊ฑฐ ๊ฐ์๋
์ด๋ฐ ๋ฐฉ๋ฒ ๋ง๊ณ ๋ ์๋์ ๋ฐฉ๋ฒ์ด ์์
enum Status {
STATUS_SWIM = 0d00000001,
STATUS_POISON = 0d00000010;
};
int status = 0;
bool status_is_swim()ย
{
ย ย return status & Status::STATUS_SWIM;
}
์ด๋ฐ์์ผ๋ก ๊ฐ๋ฅํจ
int8 istatus = 0;ย
์ด๋ฐ๊ฑด ์ํ์ย ๋จ๊ณ๋ณ๋ก ํจ๊ณผ๊ฐ ๋ค๋ฅด๊ฒ ์ ์ฉ๋๋๊น, ๋ญ ๋ค๋ฅธ๋ฌธ์ ์ด๊ธด ํ๋
bool bstate_swim = false;
์ด๋ฐ์์ผ๋ก ์ ์ฅํ๋๊ฑด ๊ฐ ํ๋ํ๋์ 4๋ฐ์ดํธ๊ฐ ์์๋๋๊ฑด ๋ค์ด๊ณ , ๋ณต์กํด์ง ์ ์์
๋จ์ํ๊ฒ, ์์์ค ๋นํ์ค ์ด๋ฐ๊ฑด ์ ๋ฐ์์ผ๋ก ํด๋ฒ๋ฆฌ๋๊ฒ ์ข์
๋ ผ๋ฆฌ์ฐ์ฐ์๋ผ ๋น ๋ฅด๊ธฐ๋ ํ๊ณ ใ ใ
c++ ๊ธฐ์ค์ผ๋ก ์ฐ๊ธด ํ๋๋(C์๋ bool ๊ฐ์๊ฑฐ๊ฐ ์์ผ๋๊น)
๋ชป์์๋จน์ผ๋ฉด ๋ชป ์์๋จน๋๋ ์๋ชป์ด๋๊น ์ธ์ด ๊ณต๋ถ ๋ ํ๊ณ ์๋ผ
ใณ
์ ๊ฐ ๊ฐ๋ ์ด ๋ถ์กฑํด์ ํท๊ฐ๋ฆฌ๋๋ฐ, ์ด๋ ๊ฒ ํ๋ฉด int ํฌ๊ธฐ 4๋ฐ์ดํธ๋ ์ต๋ 31์ข ๋ฅ ์ ์ฅ ๊ฐ๋ฅํ๊ฑด๊ฐ์?
https://docs.microsoft.com/ko-kr/cpp/cpp/data-type-ranges?view=vs-2019
uint์
!!
๊ธ๊ตฌ bool๋ 1๋ฐ์ดํธ๋ผ๊ณ ๋์ด์์ด์..
1๋ฐ์ดํธ์ 8๋นํธ => int ๋ 4๋ฐ์ดํธ => 32๋นํธ bool => 1๋ฐ์ดํธ => 8๋นํธ, ๋จ bool์ true false (1๊ณผ 0)๋ง ์ ์ฅํ๋๋ก ๋์ด ์์ผ๋๊น, char ์ฒ๋ผ ๋ค๋ฅธ๊ฑฐ ๋ฐ์ผ๋ ค ํ๋ฉด ์ค๋ฅ ๋ฐ ๊ฐ๋ฅ์ฑ ๋์, ๋ณดํต ์ํด๋ด์ ๋ชจ๋ฅด๊ฒ ใ
๋ณดํต์ ์ผ๋ก signed int ๋ ๋งจ ์์ ์๋ฆฌ๊ฐ ์ ์/์์ ๋ํ๋ด๋๋ฐ, ์์ธํ๊ฑด 2์ ๋ณด์ ์ฐธ๊ณ ํ์๊ตฌ uint (unsigned int) ๋ ๊ทธ๋ฐ๊ฑฐ ์์ด ์์ ์ ์๋ง ๋ฃ๋๊ฒ => 32๊ฐ์ง ํ ์ ์์ ใ ใ ใ ใ
STATUS_SWIM = 0d00000001, STATUS_POISON = 0d00000010; ์ด ๋ถ๋ถ์์ ๊ท์ฐฎ์์, ๋๊น์ง ๋ค ์์ผ๋๋ฐ(์ฌ์ค int8 ์ผ๋ก ์ด์ค ์์์ ใ ) STATUS_SWIM = 0d00000000000000000000000000000001,
STATUS_SWIM = 0d00000000000000000000000000000001, STATUS_POISON = 0d00000000000000000000000000000010; ์ด๋ฐ์์ผ๋ก ์ฐ๋๊ฒ ๋ง์
๊ฐ์ฌํฉ๋๋ค