๋คํธ์ํฌ ํ์ ๊ฐ๋ฐํ๋ค๊ฐ ๋ฐ๊ฒฌํ ๋นํธ์ฐ์ฐ์!!!
์์ํ ์ฐ์ฐ์์ง๋ง, C์ธ์ด ์ฐ์ฐ์์ ๋์ผํ๋ค.
๋จผ์ ์ด์ง๋ฒ์ ์ต์ํด์ผ ํจ,,;; ๋๋ ๋ค์ ์ฐพ์๋ดค๋ค!...
1. ์ญ์ง๋ฒ > ์ด์ง๋ฒ
์๋๋ ๊ฐ๋จํ๊ฒ ์ญ์ง๋ฒ(5)์ ์ด์ง๋ฒ(101)์ผ๋ก ๋ณํํ๋ ์์ !
์ญ์ง๋ฒ์ผ๋ก ํํํ๋ 5๋ ์ด์ง๋ฒ์ผ๋ก ํํํ๋ฉด 101!!
2. ์ด์ง๋ฒ > ์ญ์ง๋ฒ
์ด์ง๋ฒ(1101)์ ์ญ์ง๋ฒ(13)์ผ๋ก ๋ณํ
๋ค์ ๋ณธ๋ก ์ผ๋ก ๋์์ค๋ฉด, ๋ด๊ฐ ๋ณธ ์ฝ๋๋ SCNetworkReachabilityFlags์ ๊ฐ๋ค์ด์๋๋ฐ,
typedef CF_OPTIONS(uint32_t, SCNetworkReachabilityFlags) {
kSCNetworkReachabilityFlagsTransientConnection = 1<<0,
kSCNetworkReachabilityFlagsReachable = 1<<1,
kSCNetworkReachabilityFlagsConnectionRequired = 1<<2,
kSCNetworkReachabilityFlagsConnectionOnTraffic = 1<<3,
kSCNetworkReachabilityFlagsInterventionRequired = 1<<4,
kSCNetworkReachabilityFlagsConnectionOnDemand
API_AVAILABLE(macos(10.6),ios(3.0)) = 1<<5,
kSCNetworkReachabilityFlagsIsLocalAddress = 1<<16,
kSCNetworkReachabilityFlagsIsDirect = 1<<17,
kSCNetworkReachabilityFlagsIsWWAN
API_UNAVAILABLE(macos) API_AVAILABLE(ios(2.0)) = 1<<18,
kSCNetworkReachabilityFlagsConnectionAutomatic = kSCNetworkReachabilityFlagsConnectionOnTraffic
};
<< ์๋ก ์ฐ์ฐ์๊ฐ ์์์. ์ด๊ฒ์ ๋นํธ์ฐ์ฐ์ ์ค ํ๋๋ก ๋นํธ์ฐ์ฐ์์ ๋ํด ์์๋ด์ผ ํ๋ค.
๋นํธ ์ฐ์ฐ์(bitwise operator)
bit ๋จ์๋ก ์ํ๋๋ ๋ ผ๋ฆฌ ์ฐ์ฐ์
๋นํธ ์ฐ์ฐ์ | ์ค๋ช |
& (bitwise and) |
๋์ ๋๋ ๋นํธ๊ฐ ๋ชจ๋ 1์ธ ๊ฒฝ์ฐ์๋ง 1๋ฐํ (logical AND ์ฐ์ฐ) |
| (bitwise or) |
๋์ ๋๋ ๋นํธ ์ค ํ๋๋ผ๋ 1์ด๋ฉด 1๋ฐํ (logical OR ์ฐ์ฐ) |
^ (bitwise xor) |
๋์๋๋ ๋นํธ๊ฐ ์๋ก ๋ค๋ฅด๋ฉด 1์ ๋ฐํ (logical XOR ์ฐ์ฐ) |
~ (bitwise not) |
๋นํธ์ ๋ฐ์ (1 -> 0, 0 -> 1). ์ด์ง์์ (1์)๋ณด์๊ฐ์ ์ทจํ๋ ๋จํญ ์ฐ์ฐ์. |
<< (left logical shift) |
์ผ์ชฝ์ผ๋ก ์ด๋ |
>> (right logical/arithmetic shift) |
์ค๋ฅธ์ชฝ์ผ๋ก ์ด๋ |
์ ํ๋ฅผ ๋ณด๋ฉด >>์ Shift ์ฐ์ฐ์์์ ์ ์ ์์๋ค.
๋ฐ๋ผ์, 1<<0์ 1์ ์ด์ง๋ฒ์ผ๋ก ๋ํ๋ธ ๋นํธ๋ฅผ 0์นธ ์ผ์ชฝ์ผ๋ก ์ฎ๊ธด๋ค๋ ๊ฒ!!!
๋ฐ๋ผ์, 1<<3์ 1์ ์ด์ง๋ฒ์ผ๋ก ๋ํ๋ธ ๋นํธ๋ฅผ 3์นธ ์ผ์ชฝ์ผ๋ก ์ฎ๊ธด๋ค๋ ๊ฒ!!! ํ๋ก ๋ํ๋ด๋ฉด,
์ญ์ง๋ฒ | 1 |
์ด์ง๋ฒ | 1 |
์ผ์ชฝ์ผ๋ก 3์นธ ์ด๋ํ ๊ฐ์ ์ด์ง๋ฒ | 1000 |
์ผ์ชฝ์ผ๋ก 3์นธ ์ด๋ํ ๊ฐ์ ์ญ์ง๋ฒ | 8 |
๋ฐ๋ผ์ 1<<3์ 8์ด ๋๋ค.
๊ทผ๋ฐ, ๊ฐ์ด 1์ด๋ผ์ ์ด์ง๋ฒ์ผ๋ก๋ 1๋ง ์กด์ฌํ์ฌ 2์ ์ ๊ณฑ์ผ๋ก ๊ณ์ฐํ ์ ์์! ์ด์ง์๋ 2์ ๋ณด์๋ฒ์ด๊ธฐ ๋๋ฌธ~
1<<0 ์ด๋ผํจ์, ๋ฐ๋ก 2์ 0์น!!! ์ฆ 1์ ์๋ฏธํ๋ค.
๊ทธ๋ผ ๊ทธ ์๋, 1<<1์ 2์ 1์น์ธ 2๋ฅผ ์๋ฏธ!
์ถ๋ ฅํด๋ณด๋ฉด,
๋นํธ ์ฐ์ฐ์ ์ค OR ์ฐ์ฐ์์ AND ์ฐ์ฐ์๋ฅผ ์ฌ์ฉํ๋ ์ฝ๋๋ ์์๋ค....๐ฅถ
if ((flags & kSCNetworkReachabilityFlagsReachable) == 0)
{
// The target host is not reachable.
return NotReachable;
}
์ด ๊ฒฝ์ฐ์๋,
- 2์ง๋ฒ์ผ๋ก ํํ๋์ง ์์ ๊ฒฝ์ฐ ๋ณํ
- ๋ 2์ง์๋ฅผ OR ํน์ AND ์ฐ์ฐ ์ํ
- ํ์์ ๋ฐ๋ผ 10์ง๋ฒ์ผ๋ก ๋ณํ
OR ์ฐ์ฐ์
ex) 1|3
0000 0001(1)
0000 0011(3)
_________ |
0000 0011(3)
AND ์ฐ์ฐ์
ex)
0111 1000(120)
0001 1010(26)
_________ &
0001 1000(24)
'๐ iOS > Objective-C' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[iOS, Objective-C] prefixheader.pch ์ถ๊ฐํ๊ธฐ (0) | 2021.11.06 |
---|