Study/Java

μ •μˆ˜ν˜•(byte, short, int, long) νƒ€μž…μ˜ 크기

Shinjio 2023. 10. 27. 17:09
λ°˜μ‘ν˜•

λ°±μ€€μ—μ„œ 3κ°€μ§€ 수λ₯Ό λ”ν•˜λŠ” 문제λ₯Ό ν’€μ—ˆλ‹€. μ•„μ£Ό μ‰¬μš΄ λ¬Έμ œμ˜€μœΌλ‚˜ μ•„λž˜μ™€ 같은 였λ₯˜κ°€ λ°œμƒν•˜μ˜€λ‹€. 

 

 

ν•΄λ‹Ή μ—λŸ¬λŠ” μ •μˆ˜ν˜• λ²”μœ„λ‘œ 인해 λ°œμƒν•œ λ¬Έμ œμ˜€λ‹€. λ”°λΌμ„œ μ΄λ²ˆμ—λŠ” Java의 μ •μˆ˜ν˜• νƒ€μž…κ³Ό 각 νƒ€μž…λ³„ 크기λ₯Ό λ‹€μ‹œ λ³΅μŠ΅ν•΄λ³΄κ³ μž ν•œλ‹€. 

 

Java μžλ£Œν˜•

μ •μˆ˜ν˜•λΆ€ν„° λ“€μ–΄κ°€κΈ° 전에 Javaμ—μ„œλŠ” μžλ£Œν˜•μ„ 크기 'κΈ°λ³Έν˜•(Primitive type)'κ³Ό 'μ°Έμ‘°ν˜•(reference type)' 두 κ°€μ§€λ‘œ λ‚˜λˆŒ 수 μžˆλ‹€. κΈ°λ³Έν˜• λ³€μˆ˜λŠ” μ‹€μ œ κ°’(data)λ₯Ό μ €μž₯ν•˜λŠ” 반면, μ°Έμ‘°ν˜• λ³€μˆ˜λŠ” μ–΄λ–€ 값이 μ €μž₯λ˜μ–΄ μžˆλŠ” μ£Όμ†Œ(memory address)λ₯Ό κ°’μœΌλ‘œ κ°–λŠ”λ‹€. 

 

μžλ°”μ˜ κΈ°λ³Έν˜• νƒ€μž…μ€ μ•„λž˜μ™€ κ°™λ‹€. 

  • λ…Όλ¦¬ν˜•(boolean)
  • μ •μˆ˜ν˜•(byte, short, int, long)
  • λ¬Έμžν˜•(char)
  • μ‹€μˆ˜ν˜•(float, double)

μ΄λŸ¬ν•œ νƒ€μž…λ“€μ€ 각각 μ°¨μ§€ν•˜λŠ” λ©”λͺ¨λ¦¬ κ³΅κ°„μ˜ 크기가 λ‹€λ₯΄λ‹€. 

 

Java μžλ£Œν˜• : κΈ°λ³Έν˜• μœ ν˜• 및 크기

  1byte (8bit) 2byte (16bit) 4byte (32bit) 8byte (64bit)
λ…Όλ¦¬ν˜• boolean      
λ¬Έμžν˜•   char    
μ •μˆ˜ν˜• byte short int long
μ‹€μˆ˜ν˜•     float double

 

μ •μˆ˜ν˜• 크기 

μ •μˆ˜ν˜•μ˜ ν¬κΈ°λŠ” bitμˆ˜μ— 따라 ꡬ할 수 μžˆλ‹€. μ•„λž˜ μ‹μ—μ„œ n에 ν•΄λ‹Ήν•˜λŠ” bit수λ₯Ό λ„£μœΌλ©΄ λœλ‹€. 

-2^(n-1) ~ 2^(n-1) - 1 

 

λ¬Έμ œμ—μ„œ 숫자의 λ²”μœ„λŠ” μ•„λž˜μ™€ κ°™μ•˜λ‹€. 

 

처음 λ‚΄κ°€ 문제λ₯Ό ν’€μ—ˆμ„ 땐 int νƒ€μž…μ„ μ‚¬μš©ν•˜μ˜€λ‹€. 

int νƒ€μž…μ˜ 경우 4byte둜 -2^(-31) ~ 2^(31)-1 κΉŒμ§€μ˜ λ²”μœ„λ₯Ό κ°€μ§€κ³  μžˆλ‹€. 

 

2^10 = 1024 => μ•½ 10^3 

2^31 = 2^10 *  2^10 * 2^10 * 2 = 1024 * 1024 * 1024 * 2 = 2*10^9 μ΄λ―€λ‘œ

λŒ€λž΅ 10자리의 μˆ«μžμ΄λ‹€.

 

λ¬Έμ œν•΄μ„œλŠ” 숫자 A, B, Cκ°€ 10자리 μ΄μƒμ΄λ―€λ‘œ 그보닀 더 큰 λ²”μœ„λ₯Ό κ°€μ§„ long νƒ€μž… μ •μˆ˜λ₯Ό μ‚¬μš©ν•΄μ•Ό ν–ˆλ‹€. 

 

μ•žμœΌλ‘œ 문제 ν’€ λ•Œ, μ •μˆ˜ν˜• 크기 μ£Όμ˜ν•΄μ„œ ν’€μž!

 

πŸ‘ κΈ°μ–΅ Point

int μžλ£Œν˜• → λŒ€λž΅ 20μ–΅μœΌλ‘œ 10 자리 수

 

λ°˜μ‘ν˜•