๐ŸŽ Apple/Swift

[Swift] Swift์˜ Int ์ž๋ฃŒํ˜•๊ณผ ์˜ค๋ฒ„ํ”Œ๋กœ์šฐ ์ฒ˜๋ฆฌ ๋ฐฉ๋ฒ•

JINiOS 2024. 6. 8. 17:19
728x90

์ฝ”๋”ฉํ…Œ์ŠคํŠธ์—์„œ ํ…Œ์ŠคํŠธ์ผ€์ด์Šค๋Š” ๋‹ค ๋งž์•˜๋Š”๋ฐ ํžˆ๋“  ์ผ€์ด์Šค์—์„œ ๋‹ค ๋Ÿฐํƒ€์ž„ ์—๋Ÿฌ๋ฅผ ๋‚ด๋ฒ„๋ฆฐ ๊ฒฝํ—˜!!!!!์ด ์žˆ๋‹ค..

 

ํ…Œ์ผ€๋ฅผ ์กฐ๊ธˆ์ด๋ผ๋„ ๋งžํ˜”์œผ๋‹ˆ๊นŒ,, ์ผ๋‹จ ๋‹ค์Œ๋ฌธ์ œ๋กœ ๋„˜์–ด๊ฐ”๋‹ค๊ฐ€ ๋‹ค์‹œ ํ•ด๋‹น ๋ฌธ์ œ๋ฅผ ๊ณ ๋ฏผํ–ˆ๋Š”๋ฐ,

10๋ถ„๋„ ์ฑ„ ๋‚จ์ง€ ์•Š์€ ์ƒํƒœ์—ฌ์„œ ์•Œ๊ณ ๋ฆฌ์ฆ˜์— ๋ฌธ์ œ๊ฐ€ ์žˆ๋‚˜๋งŒ ์ƒ๊ฐํ•˜๋‹ค๊ฐ€ ์‹œํ—˜์ด ์ข…๋ฃŒ๋˜์—ˆ๋‹ค.

 

ํ…Œ์ŠคํŠธ๊ฐ€ ๋๋‚œ ํ›„ ์”ป์œผ๋ฉด์„œ ์ƒ๊ฐ์„ ํ–ˆ๋Š”๋ฐ, ์ž๋ฃŒํ˜•์„ ๊ณ ๋ คํ•˜์ง€ ๋ชปํ•ด์„œ ์—๋Ÿฌ๋‚œ ๊ฒƒ ๊ฐ™๋‹ค!!!๋ผ๋Š” ์ƒ๊ฐ์„ ๊ทธ์ œ์„œ์•ผ ํ–ˆ๋‹ค.

ํ•ด๋‹น ๋ฒ”์œ„๊ฐ€ -10^9 ~ 10^9 ์ด์—ˆ๋Š”๋ฐ,, ์‚ฐ์ˆ ํ•  ๋•Œ ๋ฒ”์œ„๋ฅผ ๊ณ ๋ คํ–ˆ์–ด์•ผ ์•ˆ์ „ํ–ˆ์—ˆ๊ฒ ๋‹ค๋ž€ ์ƒ๊ฐ...

 

Int ์ž๋ฃŒํ˜•์— ๋Œ€ํ•ด ๋จธ๋ฆฌ์— ๋„ฃ์–ด๋†”์•ผ ๋˜ ์‹ค์ˆ˜๋ฅผ ์•ˆํ•  ๊ฒƒ ๊ฐ™์•„์„œ ์ •๋ฆฌํ•ด๋ณด๋ ค๊ณ  ํ•œ๋‹ค ! ๐Ÿ˜ฅ

 


 

 

 

๋‹ค๋“ค ์•„์‹œ๊ฒ ์ง€๋งŒ !

Int ๋’ค์— ๋ถ™์€ ์ˆซ์ž๋Š” ๋น„ํŠธ๋ฅผ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

์Šค์œ„ํ”„ํŠธ์—์„œ์˜ Int๋Š” Int8, Int16, Int32, Int64๋ฅผ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.

 

Int ํƒ€์ž…๋“ค์˜ ๋ฒ”์œ„

print("Int8 : " + String(Int8.min) + " ~ " + String(Int8.max))
print("Int16 : " + String(Int16.min) + " ~ " + String(Int16.max))
print("Int32 : " + String(Int32.min) + " ~ " + String(Int32.max))
print("Int64 : " + String(Int64.min) + " ~ " + String(Int64.max))
  • Int8 : -128 ~ 127
  • Int16 : -32768 ~ 32767
  • Int32 : -2147483648 ~ 2147483647
  • Int64 : -9223372036854775808 ~ 9223372036854775807

 

๋น„ํŠธ๋ฅผ ๋ช…์‹œํ•˜์ง€ ์•Š์€ Int

๋น„ํŠธ๋ฅผ ๋ช…์‹œํ•˜์ง€ ์•Š๋Š” Int๋Š” ์‹œ์Šคํ…œ์˜ ์•„ํ‚คํ…์ฒ˜์— ๋”ฐ๋ผ ๋‹ค๋ฅด๊ฒŒ ์ง€์ •๋˜๊ณ , ํ”Œ๋žซํผ์— ๋”ฐ๋ผ 32๋น„ํŠธ ๋˜๋Š” 64๋น„ํŠธ๋กœ ๊ตฌํ˜„๋ฉ๋‹ˆ๋‹ค.

์š”์ฆ˜ ๋Œ€๋ถ€๋ถ„์˜ ํ”Œ๋žซํผ์—์„œ๋Š” Int๊ฐ€ 64๋น„ํŠธ ์ •์ˆ˜๋กœ ์ •์˜๋˜์–ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์—, ๋งค์šฐ ํฐ ์ˆซ์ž๋ฅผ ๋‹ค๋ฃฐ ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค!

์•„๋ž˜์˜ ์ด๋ฏธ์ง€์ฒ˜๋Ÿผ, ์ œ ๋งฅ์—์„œ๋Š” Int์˜ ๋ฒ”์œ„๊ฐ€ Int64์˜ ๋ฒ”์œ„์™€ ๋™์ผํ•˜๊ฒŒ ๋‚˜ํƒ€๋‚˜๋Š” ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

 

 


 

Int ์˜ค๋ฒ„ํ”Œ๋กœ์šฐ ๋” ์•Œ์•„๋ณด๊ธฐ  -   &+   &-   &* ์—ฐ์‚ฐ์ž

์ฐพ์•„๋ณด๋ฉด์„œ ์ตœ๋Œ“๊ฐ’์„ ๋„˜์—ˆ์„ ๊ฒฝ์šฐ์— ์˜ค๋ฒ„ํ”Œ๋กœ์šฐ ์—†์ด ์–ด๋–ป๊ฒŒ ์ฒ˜๋ฆฌํ•˜๋Š”์ง€ ๊ถ๊ธˆํ•ด์ ธ์„œ ์ฐพ์•„๋ดค์Šต๋‹ˆ๋‹ค.

 

 

ํ•˜๋‹จ์˜ ์ฝ”๋“œ๊ณผ ๊ฐ™์ด max๊ฐ’, min๊ฐ’์˜ ๋ฒ”์œ„๋ฅผ ๋„˜์–ด์„œ๋ฉด ์˜ค๋ฒ„ํ”Œ๋กœ์šฐ๊ฐ€ ๋‚˜๊ฒŒ ๋˜๋Š”๋ฐ,

let maxInt = Int.max
let minInt = Int.min

// ์˜ค๋ฒ„ํ”Œ๋กœ์šฐ ๋ฐœ์ƒ (์ปดํŒŒ์ผ ์—๋Ÿฌ ๋ฐœ์ƒ)
let overflowInt = maxInt + 1
let underflowInt = minInt - 1

 

 

 

Swift์—์„œ๋Š” &+, &-, &* ์—ฐ์‚ฐ์ž๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์˜ค๋ฒ„ํ”Œ๋กœ์šฐ๋ฅผ ํ—ˆ์šฉํ•˜๋Š” ์—ฐ์‚ฐ์„ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. 

์ด๋Š” ์ž๋™์œผ๋กœ ๋ฒ”์œ„๋ฅผ ์ˆœํ™˜ํ•˜๊ฒŒ ๋˜์–ด ์ตœ๋Œ“๊ฐ’์— + 1ํ•˜๋Š” ๊ฒฝ์šฐ์— ์ตœ์†Œ๊ฐ’์œผ๋กœ ์ˆœํ™˜ํ•˜๊ณ ,

์ตœ์†Ÿ๊ฐ’์— -1 ํ•˜๋Š” ๊ฒฝ์šฐ์— ์ตœ๋Œ“๊ฐ’์œผ๋กœ ๋ณ€๊ฒฝ๋˜์–ด ์—ฐ์‚ฐ์„ ์ด์–ด๋‚˜๊ฐ€๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

print(Int.max)
print(Int.max &+ 1)
print(Int.min)
print(Int.min &- 1)

 

 

 

 

Int ์˜ค๋ฒ„ํ”Œ๋กœ์šฐ ๋” ์•Œ์•„๋ณด๊ธฐ  -   addReportingOverflow ๋ฉ”์„œ๋“œ

Swift์—๋Š” ์˜ค๋ฒ„ํ”Œ๋กœ์šฐ๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋Š” ๋ฉ”์„œ๋“œ๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

๋‹ค์Œ๊ณผ ๊ฐ™์ด addReportingOverflow๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์˜ค๋ฒ„ํ”Œ๋กœ์šฐ๊ฐ€ ๋ฐœ์ƒํ•  ๋•Œ ์›ํ•˜๋Š” ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

 

let maxInt = Int.max
let valueToAdd = 5

let (result, overflow) = maxInt.addingReportingOverflow(valueToAdd)
let finalResult = overflow ? Int.max : result

print(finalResult) // 9223372036854775807 (Int.max)

 

728x90