๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

๐ŸŽ iOS/Objective-C

[iOS]Objective-C ์—์„œ ์ด์ง„๋ฒ•, ๋น„ํŠธ์—ฐ์‚ฐ์ž(|,&,>>,<<) ์‚ฌ์šฉํ•˜๊ธฐ

728x90

๋„คํŠธ์›Œํฌ ํƒ€์ž… ๊ฐœ๋ฐœํ•˜๋‹ค๊ฐ€ ๋ฐœ๊ฒฌํ•œ ๋น„ํŠธ์—ฐ์‚ฐ์ž!!!

์ƒ์†Œํ•œ ์—ฐ์‚ฐ์ž์ง€๋งŒ, 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;
    }

์ด ๊ฒฝ์šฐ์—๋Š”, 

  1. 2์ง„๋ฒ•์œผ๋กœ ํ‘œํ˜„๋˜์ง€ ์•Š์€ ๊ฒฝ์šฐ ๋ณ€ํ™˜
  2. ๋‘ 2์ง„์ˆ˜๋ฅผ OR ํ˜น์€ AND ์—ฐ์‚ฐ ์ˆ˜ํ–‰
  3. ํ•„์š”์— ๋”ฐ๋ผ 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