[ ì¶ì² ]
ìë°ì ì ì:
https://product.kyobobook.co.kr/detail/S000001550352
ìë°ì ì ì ì íëž:
https://www.youtube.com/playlist?list=PLW2UjW795-f6xWA2_MUhEVgPauhGl3xIp
1. ë³ì(variable)
1-1 ë³ì(variable)ë?
íëì ê°ì ì ì¥í ì ìë ë©ëªšëЬ ê³µê°(RAM)
1-2 ë³ìì ì ìžê³Œ ìŽêž°í
1-3 ë³ìì ëª ëª ê·ì¹
ëª ëª ê·ì¹
- ëì묞ìê° êµ¬ë¶ëë©° êžžìŽì ì íìŽ ìë€.
Trueì trueë ìë¡ ë€ë¥ž ê²ìŒë¡ ê°ì£Œëë€.
- ììœìŽ(Reserved word)륌 ì¬ì©íŽìë ì ëë€.
trueë ììœìŽëŒ ì¬ì©í ì ìì§ë§, Trueë ê°ë¥íë€.
- ì«ìë¡ ììíŽìë ì ëë€.
top10ì íì©íì§ë§, 7upì íì©ëì§ ìëë€.
- í¹ì묞ìë â_âì â$âë§ì íì©íë€.
$harpì íì©ëì§ë§ S#arpë íì©ëì§ ìëë€.
ëª ëª ê·ì¹ - ê¶ì¥ì¬í
- íŽëì€ ìŽëŠì 첫 êžìë íì ë묞ìë¡ íë€.
ë³ìì ë©ìë ìŽëŠì 첫 êžìë íì ì묞ìë¡ íë€.
- ì¬ë¬ ëšìŽ ìŽëŠì ëšìŽì 첫 êžì륌 ë묞ìë¡ íë€.
lastIndexOf, StringBuffer
- ììì ìŽëŠì ë묞ìë¡ íë€. ëšìŽë â_âë¡ êµ¬ë¶íë€.
PI, MAX_NUMBER
2. ë³ìì íì
ê°ì íì

Ʞ볞í곌 ì°žì¡°í
Ʞ볞í(primitive type)
- 8ê° : ë ŒëŠ¬í(boolean), 묞ìí(char), ì ìí(byte, short, int, long), ì€ìí(float, double)
ì°žì¡°í(reference type)
- ê°ì²Žì 죌ì륌 ì ì¥íë€. 8ê°ì Ʞ볞íì ì ìží ëëšžì§ íì .
2-1 Ʞ볞í(primitive type)
ë¶ë¥ | íì |
---|---|
ë ŒëŠ¬í | boolean trueì falseì€ íë륌 ê°ìŒë¡ ê°ìŒë©°, 조걎ì곌 ë ŒëŠ¬ì ê³ì°ì ì¬ì©ëë€. |
묞ìí | char 묞ì륌 ì ì¥íëë° ì¬ì©ëë©°, ë³ìì íëì 묞ìë§ ì ì¥í ì ìë€. |
ì ìí | byte, short, int, long ì ì륌 ì ì¥íëë° ì¬ì©ëë©°, ì£Œë¡ intê° ì¬ì©ëë€. byteë ìŽì§ ë°ìŽí°ë¥Œ ë€ë£° ë ì¬ì©ëë©°, shortë CìžìŽìì ížíì ìíŽì ì¶ê°ëìë€. |
ì€ìí | float, double ì€ì륌 ì ì¥íëë° ì¬ì©ëë©°, ì£Œë¡ doubleìŽ ì¬ì©ëë€. |
ì¢ ë¥/í¬êž° | 1 | 2 | 4 | 8 |
---|---|---|---|---|
ë ŒëŠ¬í | boolean | |||
묞ìí | char | |||
ì ìí | byte | short | int | long |
ì€ìí | float | double |
Ʞ볞 ìë£í ì¢ ë¥/í¬êž° ìêž° í!
- booleanì trueì false ë ê°ì§ ê°ë§ ííí ì ììŒë©Ž ëë¯ë¡ ê°ì¥ ìì í¬êž°ìž 1byte.
- charë ìë°ìì ì ëìœë(2 byte 묞ì첎ê³)륌 ì¬ì©íë¯ë¡ 2 byte.
- byteë í¬êž°ê° 1 byteëŒì byte.
- int(4 byte)륌 êž°ì€ìŒë¡ ì§§ìì short(2 byte), êžžìŽì long(8byte). (short â long)
- floatë ì€ìê°ì ë¶ëììì (floating-point) ë°©ììŒë¡ ì ì¥íêž° ë묞ì float.
- doubleì floatë³Žë€ ë ë°°ì í¬êž°(8 byte)륌 ê°êž° ë묞ì double.
ð¡Tips
- int íì ì ëëµ 10ì늬 륌 ì ì¥í ì ìëë°. 7~9ì늬ì ì륌 ê³ì°í ëë ëëíê² long íì (ìœ 19ì늬)ìŒë¡ ì ìžíë ê²ìŽ ì¢ë€.
- float ì ë°ë 7ì늬 / double ì ë°ë 15ì늬 / floatë í° ê°ì ì ì¥í ì ìì§ë§ ëì ì ë°ëê° íìí 겜ì°ìë ë³ìì íì ìŒë¡ doubleì ì ííŽìŒ íë€.
2-2 ììì 늬í°ëŽ(constant & literal)
12, 123, 3.14, âAâì ê°ì ê°ë€ìŽ âììâìžë° íë¡ê·žëë°ììë ìì륌 ê°ì í ë² ì ì¥í멎 ë³ê²œí ì ìë ì ì¥ê³µê°ìŒë¡ ì ìíìêž° ë묞ì ìŽì 구ë³íêž° ìíŽ ìì륌 ë€ë¥ž ìŽëŠìŒë¡ ë¶ë¬ìŒë§ íë€. ê·žëì ìì ëì 늬í°ëŽìŽëŒë ì©ìŽë¥Œ ì¬ì©íë€.
ë³ì(variable) : íëì ê°ì ì ì¥íêž° ìí ê³µê°
ìì(constant) : í ë²ë§ ê°ì ì ì¥ ê°ë¥í ë³ì
늬í°ëŽ(literal) : ê·ž ìì²Žë¡ ê°ì ì믞íë ê²
ìì == 늬í°ëŽ ìŽëŒê³ 볎멎 ëš
늬í°ëŽì íì 곌 ì 믞ì¬
ì ìí곌 ì€ìíìë ì¬ë¬ íì ìŽ ì¡Žì¬íë¯ë¡, 늬í°ëŽì ì 믞ì¬ë¥Œ ë¶ì¬ì íì ì 구ë¶íë€.
ì¢ ë¥ | 늬í°ëŽ | ì ë¯žì¬ |
---|---|---|
ë ŒëŠ¬í | false, true | ìì |
ì ìí | 123, 0b0101, 077, 0xFF, 100L | L |
ì€ìí | 3.14, 3.0e8, 1.4f, 0x1.0p-1 | f, d |
묞ìí | âAâ, â1â, â\nâ | ìì |
묞ììŽ | âABCâ, â123â, âAâ, âtrueâ | ìì |
int octNum = 010; // 8ì§ì 10, 10ì§ìë¡ 8
int hexNum = 0x10; // 16ì§ì 10, 10ì§ìë¡ 16
int binNum = 0b10; // 2ì§ì 10, 10ì§ìë¡ 2
long big = 100_000_000_000L; // JDK1.7ë¶í° ì ìí 늬í°ëŽ ì€ê°ì 구ë¶ì('_')륌 ë£ì ì ìê²ëš!
long hex = 0XFFFF_FFFF_FFFF_FFFFL;
float pi = 3.14f; // ì ë¯žì¬ f ëì F륌 ì¬ì©íŽë ëë€. / ìëµ ë¶ê°
float rate = 1.618d; // ì ë¯žì¬ d ëì D륌 ì¬ì©íŽë ëë€. / doubleìŽ êž°ë³ž ìë£íìŽëŒ d ìëµê°ë¥
ë³ìì 늬í°ëŽì íì ë¶ìŒì¹
- ë²ìê° âë³ì(ê·žëŠ) > 늬í°ëŽ(묌걎)âìž ê²œì° OK
int i = 'A'; // int > char long l = 123; // long > int double d = 3.14f; // double > float
- ë²ìê° âë³ì < 늬í°ëŽâìž ê²œì°, ìë¬
int i = 30_0000_0000; // intì ë²ì(20ìµ) ë²ìŽëš long l = 3.14f; // long < float (ì€ìíì ì ìíë³Žë€ ì ì¥ë²ìê° íšì¬ ëêž° ë묞ì ìë¬ë°ì) float f = 3.14; // float < double
- byte, short ë³ìì int 늬í°ëŽ ì ì¥ê°ë¥(ëš, ë³ìì íì
ì ë²ì ìŽëŽìŽìŒ íš)
byte b = 100; // OK. byteì ë²ì(-128~127)ì ìíš byte b = 128; // ìë¬. byteì ë²ì륌 ë²ìŽëš
ìì
boolean power = true;
byte b = 127;
int oct = 010; // 8ì§ì, 10ì§ìë¡ 8
int hex = 0x10; // 16ì§ì, 10ì§ìë¡ 16
long l = 10_000_000_000L;
// long l = 10_000_000_000; // ìë¬
float f = 3.14f;
double d = 3.14; // dë ìëµ ê°ë¥íŽì ì§ìë ìë¬ê° ë°ìíì§ ìëë€.
double d2 = 3.14; // float < double ìŽêž° ë묞ì ìë¬ ë°ì X
System.out.println(oct); // printlnì ê°ì 10ì§ìë¡ë§ ì¶ë ¥í ì ìë€. ì ëì¬ì ì 믞ì¬ë ì¶ë ¥ëì§ ìì
System.out.println(hex);
System.out.println(10.); // 10.0
System.out.println(.10); // 0.1
System.out.println(10f); // 10.0
System.out.println(1e3); // 1000.0
2-3 íìíë ì¶ë ¥ - printf()
printf()ë âì§ìì(specifier)â륌 íµíŽ ë³ìì ê°ì ì¬ë¬ ê°ì§ íììŒë¡ ì§ì íŽì£Œë ìí ì íë€.
ì죌 ì¬ì©ëë ì§ìì
ì§ìì | ì€ëª |
---|---|
%b | ë¶ëЬìž(boolean) íììŒë¡ ì¶ë ¥ |
%d | 10ì§(decimal) ì ìì íììŒë¡ ì¶ë ¥ |
%o | 8ì§(octal)ì ìì íììŒë¡ ì¶ë ¥ |
%x, %X | 16ì§(hexa-decimal) ì ìì íììŒë¡ ì¶ë ¥ |
%f | ë¶ë ììì (floating-point)ì íììŒë¡ ì¶ë ¥ |
%e, %E | ì§ì(exponent) ííìì íììŒë¡ ì¶ë ¥ |
%c | 묞ì(character)ë¡ ì¶ë ¥ |
%s | 묞ììŽ(string)ë¡ ì¶ë ¥ |
ìì ch2 - PrintfEx1.java
byte b = 1; short s = 2; char c = 'A'; int finger = 10; long big = 100_000_000_000L; System.out.printf("b = %d\n", b); System.out.printf("s = %d\n", s); System.out.printf("c = %c\n", c); System.out.printf("finger = [%5d]\n", finger); // finger = [ 10] System.out.printf("finger = [%-5d]\n", finger); // finger = [10 ] System.out.printf("finger = [%05d]\n", finger); // finger = [00010] / íëê° 5ìëŠ¬ë³Žë€ ì§§ìŒë©Ž ìŒìªœì 0ìŒë¡ ì±ì°ëŒë ë» System.out.printf("big = %d\n", big);
ì§ìì '%x'ì '%o'ì '#'륌 ì¬ì©í멎 ì ëì¬ '0x(16ì§ì)'ì '0(8ì§ì)'ìŽ ê°ê° ë¶ëë€. ê·žëŠ¬ê³ '%X'ë 16ì§ìì ì¬ì©ëë ì ëì¬ì ì묞ì륌 ë묞ìë¡ ì¶ë ¥íë€.
long hex = 0xFFFF_FFFF_FFFF_FFFFL; // long hex = 0xFFFFFFFFFFFFFFFFL;
System.out.printf("hex = %x\n", hex); // hex = ffffffffffffffff
System.out.printf("hex = %#x\n", hex); // hex = 0xffffffffffffffff
System.out.printf("hex = %#X\n", hex); // hex = 0XFFFFFFFFFFFFFFFF
10ì§ì륌 2ì§ìë¡ ì¶ë ¥íŽì£Œë ì§ììë ìêž° ë묞ì Integer.toBinaryString(int i)륌 ì¬ì©íŽìŒ íë€.
int octNum = 010; // 8ì§ì 10, 10ì§ìë¡ë 8
int hexNum = 0x10; // 16ì§ì 10, 10ì§ìë¡ë 16
int binNum = 0b10; // 2ì§ì 10, 10ì§ìë¡ë 2
System.out.printf("octNum = %o, %d\n", octNum, octNum);
System.out.printf("hexNum = %x, %d\n", hexNum, hexNum);
System.out.printf("binNum = %s, %d\n", Integer.toBinaryString(binNum), binNum);
ì€ìí ê°ì ì¶ë ¥ì ì¬ì©ëë ì§ììë â%fâ, â%eâ, â%gâê° ìëë°, â%f
âê° ì£Œë¡ ì°ìŽê³ â%e
âë ì§ì ííë¡ ì¶ë ¥í ë, â%g
âë ê°ì ê°ëµíê² ííí ë ì¬ì©íë€.
â%f
âë Ʞ볞ì ìŒë¡ ììì ìë 6ì늬
ê¹ì§ë§ ì¶ë ¥íêž° ë묞ì ììì ìë 7ì늬ìì ë°ì¬ëŠŒíë€. ê·žëì 1.23456789ê° 1.234568
ë¡ ì¶ë ¥ëìë€.
String url = "www.codechobo.com";
float f1 = .10f; // 0.10. 1.0e-1
float f2 = 1e1f; // 10.0, 1.0e1, 1.0e+1
float f3 = 3.14e3f;
double d = 1.23456789;
System.out.printf("f1=%f, %e, %g%n", f1, f1, f1);
System.out.printf("f2=%f, %e, %g%n", f2, f2, f2);
System.out.printf("f3=%f, %e, %g%n", f3, f3, f3);
System.out.printf("d = %f\n", d);
System.out.printf("d = %14.3f\n", d); // ì 첎 14ì늬 ì€ ììì 10ì늬
System.out.printf("[12345678901234567890]%n");
System.out.printf("[%s]\n", url); // 묞ììŽì êžžìŽë§íŒ ì¶ë ¥ê³µê°ì í볎
System.out.printf("[%20s]\n", url); // ìµì 20êžì ì¶ë ¥ ê³µê° í볎.(ì°ìž¡ ì ë ¬)
System.out.printf("[%-20s]\n", url); // ìµì 20êžì ì¶ë ¥ ê³µê° í볎.(ì¢ìž¡ ì ë ¬)
System.out.printf("[%.8s]\n", url); // ìŒìªœìì 8êžìë§ ì¶ë ¥
f1=0.100000, 1.000000e-01, 0.100000
f2=10.000000, 1.000000e+01, 10.0000
f3=3140.000000, 3.140000e+03, 3140.00
d = 1.234568 // ë§ì§ë§ ì늬 ë°ì¬ëŠŒëš
d = 1.235
[12345678901234567890]
[www.codechobo.com]
[ www.codechobo.com]
[www.codechobo.com ]
[www.code]
2-4 í멎ìì ì ë ¥ë°êž° - Scanner
3. ì§ë²
3-1 10ì§ë²ê³Œ 2ì§ë²
ì°ëЬë ìŒììíìì ì£Œë¡ ì¬ì©íë ê²ì 10ì§ë²ìŽë€. ìë§ë ì¬ëìŽ 10ê°ì ìê°ëœì ê° ì§ê³ ìêž° ëë¬žìŽ ìëê¹. 1816ë ì ê°ë°ë 컎íší°ìž ìëì (ENIAC)ì ì¬ëìê² ìµìí 10ë²ì ì¬ì©íëë¡ ì€ê³ëììŒë ì êž°íë¡ë ì ììŽ ë¶ìì íŽì ì ìì 10ëšê³ë¡ ëëìŽ ì²ëЬíëë° íê³ê° ììë€. ê·žëì 1950ë ì ê°ë°ë ìëë°(ENIAC)ì ëš ë ê°ì§ ëšê³, ì êž°ê° í륎멎 1, íë¥Žì§ ììŒë©Ž 0ë§ìŒë¡ ëìíëë¡ ì€ê³ëìê³ ë§€ì° ì±ê³µì ìŽìë€.
ê·ž ìŽíë¶í° ì§êžê¹ì§ ëë¶ë¶ì 컎íší°ë 2ì§ ì²Žê³ë¡ ì€ê³ëìêž° ë묞ì, 2ì§ë²ì ìì§ ëª»í멎 컎íší°ì ëìì늬ë ë°ìŽí° ì²ëŠ¬ë°©ìì ìšì í ìŽíŽí ì ìë€.
3-2 ë¹íž(bit)ì ë°ìŽíž(byte)
í ì늬ì 2ì§ì륌 âë¹íž(bit
, binary digit)âëŒê³ íë©°, 1ë¹ížë 컎íší°ê° ê°ì ì ì¥í ì ìë ìµìëšììŽë€.
ê·žë¬ë 1ë¹ížë ë묎 ìì ëšììŽêž° ë묞ì 1ë¹íž 8ê°ë¥Œ 묶ìŽì âë°ìŽíž(byte)
âëŒë ëšìë¡ ì ìíŽì ë°ìŽí°ì Ʞ볞 ëšìë¡ ì¬ì©íë€.
ìë(word) : CPUê° í ë²ì ì²ëЬí ì ìë ë°ìŽí°ì í¬êž°
ìëì í¬êž°ë CPUì ì±ë¥ì ë°ëŒ ë¬ëŒì§ë€. ì륌 ë€ìŽ 32ë¹íž CPUìì 1ìëë 32ë¹íž(4ë°ìŽíž)ìŽê³ , 64ë¹íž CPUììë 64ë¹íž(8ë°ìŽíž)ìŽë€.
ê°ì ê°ì :

ê°ì ë²ì : 0~
-1
10ì§ì nìëŠ¬ë¡ ííí ì ìë ê°ì ë²ìê° â0~-1âëŒë ê²ê³Œ ë¹êµíŽë³Žë©Ž ìŽíŽê° ë ìœë€. 10ì§ì 2ìëŠ¬ë¡ ííí ì ìë ê°ì ë²ìë â0~-1â ìŠ 0~99ê° ëë€.
3-3 8ì§ë²ê³Œ 16ì§ë²
2ì§ë²ì ì€ì§ 0곌 1, ë ê°ì êž°ížë§ìŒë¡ ê°ì íííêž° ë묞ì, 2ì§ë²ìŒë¡ ê°ì ííí멎 ì늬ìê° ìë¹í êžžìŽì§ë€ë ëšì ìŽ ìë€. ìŽë¬í ëšì ì 볎ìíêž° ìíŽ 2ì§ë² ëì 8ì§ë²ìŽë 16ì§ë²ì ì¬ì©íë€.
8ì§ìë 2ì§ì 3ì늬륌, 16ì§ìë 2ì§ì 4ì늬륌 ê°ê° íìëŠ¬ë¡ ííí ì ìêž° ë묞ì ì늬ìê° ì§§ìì žì ìì볎Ʞ ìœê³ ìë¡ ê°ì ë³íë°©ë²ë ë§€ì° ê°ëšíë€.
<2, 8, 10, 16ì§ë²ì ì¬ì©ëë êž°íž>
2ì§ì륌 8ì§ì, 16ì§ìë¡ ë³í
2ì§ì륌 8ì§ìë¡ ë³ííë €ë©Ž, 2ì§ì륌 ë€ììë¶í° 3ìëŠ¬ì© ëìŽì ê·žì íŽë¹íë 8ì§ìë¡ ë°êŸžë©Ž ëë€. 8ì ìŽêž° ë묞ì, 8ì§ì í ìëŠ¬ê° 2ì§ì 3ì늬륌 ëì í ì ìë ê²ìŽë€. 2ì§ì륌 16ì§ìë¡ ë³ííë ë°©ë² ìì ìŽì ë¹ì·íë°, 3ìëŠ¬ê° ìë 4ìëŠ¬ì© ëìŽì ë°êŸŒë€ë ì ë§ ë€ë¥Žë€.
3-4 ì ìì ì§ë² ë³í
10ì§ì륌 nì§ìë¡ ë³í
10ì§ì륌 ë€ë¥ž ì§ìë¡ ë³ííë €ë©Ž, íŽë¹ ì§ìë¡ ëëê³ ëëšžì§ ê°ì ìì ì ë ê²ì ë ìŽì ëë ì ìì ëê¹ì§ ë°ë³µí ë€ì ë§ì§ë§ 몫곌 ëëšžì§ë¥Œ ìëë¶í° ìë¡ ììëë¡ ì ìŒë©Ž ëë€.
ì± 46p. ì°žê³ !
nì§ì륌 10ì§ìë¡ ë³í
ì± 47p. ì°žê³ !
ìŽë€ ì§ë²ì ìëŒë 10ì§ìë¡ ë³ííë ë°©ë²ì ëê°ë€. ê° ì늬ì ìì íŽë¹ ëšìì ê°ì ê³±íŽì 몚ë ëí멎 ëë€. ì륌 ë€ìŽ 10ì§ì 123ì ë€ì곌 ê°ìŽ íìŽìž ì ìë€.
3-5 ì€ìì ì§ë²ë³í
10ì§ ììì ì륌 2ì§ ììì ìë¡ ë³ííë ë°©ë²
ìì 10ì§ ì ì륌 2ì§ ì ìë¡ ë³íí ë, 10ì§ì륌 2ë¡ ê³ì ëë멎ì ëëšžì§ë¥Œ 구íë ê²ì êž°ìµí ê²ìŽë€. 10ì§ ììì ì륌 2ì§ ììì ìë¡ ë³ííë ë°©ë²ì ìŽì ë°ëë¡ 10ì§ ììì ìì 2륌 ê³ì ê³±íë€.
0.625(10) â 0.101(2)
ì± 48p. ì°žê³ !
3-6 ììì 2ì§ íí - 2ì 볎ìë²
4ë¹ížì 2ì§ìë¡ ë¶ížìë ì ì, ììì ìì륌 íííë ë°©ë²ì ëí 배겜 ì€ëª ì ì± 50p. ì°žê³
ìì ìŽíŽë³ž ê²ê³Œ ê°ìŽ në¹ížì 2ì§ìë¡ ííí ì ìë ê°ì ê°ìë 몚ë 22ê°ìŽë¯ë¡, 4ë¹ížì 2ì§ìë¡ë 몚ë (=16)ê°ì ê°ì ííí ì ìë€. ìŽ ê°ì 몚ë 'ë¶ížìë ì ì(0 곌 ìì)ì ííì ì¬ì©í멎, ìëì ê°ìŽ '0ë¶í° 15ê°ì§ì ì ì'륌 ëíëŒ ì ìë€.
<4ë¹ížë¡ ííí ì ìë ë¶ížìë 10ì§ ì ì>
# 2ì§ì ë¶ížìë 10ì§ì 1 0000 ìµìê° â 0 2 0001 1 3 0010 2 4 0011 3 5 0100 4 6 0101 5 7 0110 6 8 0111 7 9 1000 8 10 1001 9 11 1010 10 12 1011 11 13 1100 12 14 1101 13 15 1110 14 16 1111 ìµëê° â 15 ê·žë¬ë©Ž 4ë¹ížì 2ì§ìë¡ ë¶ížìë ì ì, ìŠ ììì ìì륌 몚ë íííë €ë©Ž ìŽë»ê² íŽìŒ í ê¹? 4ë¹íž 2ì§ìì ì ë°ìž 8ê°ë 0ìŒë¡ ììíê³ , ëëšžì§ ì ë°ì 1ë¡ ììíëê¹, 1ë¡ ììíë 2ì§ì륌 ììííì ì¬ì©íì. ìŽë ê² í멎, 'ìŒìªœì 첫 ë²ì§ž ë¹íž(MSB)âê° 0ìŽ ë©Ž ìì, 1ìŽë©Ž ìììŽë¯ë¡ 첫 ë²ì§ž ë¹ížë§ìŒë¡ ê°ì ë¶ížë¥Œ ì ì ìê² ëë€.
# 2ì§ì ë¶ížìë 10ì§ì 1 0000 ìµìê° â 0 2 0001 1 3 0010 2 4 0011 3 5 0100 4 6 0101 5 7 0110 6 8 0111 ??? 9 1000 ??? 10 1001 ??? 11 1010 ??? 12 1011 ??? 13 1100 ??? 14 1101 ??? 15 1110 ??? 16 1111 ??? ìŽì ì íì ì ë°ì ìŽë»ê² ììë¡ ì±ììŒ í ê¹? ìŒëš ììì²ëŒ 0ë¶í° ìì°šì ìŒë¡ ì±ì볎ì.
# 2ì§ì ë¶ížìë 10ì§ì 1 0000 0 2 0001 1 3 0010 2 4 0011 3 5 0100 4 6 0101 5 7 0110 6 8 0111 ìµëê° â 7 9 1000 -0 10 1001 -1 11 1010 -2 12 1011 -3 13 1100 -4 14 1101 -5 15 1110 -6 16 1111 ìµìê° â -7 ìì륌 ìŽë ê² ë°°ì¹í멎, ììì 첫 ë²ì§ž ë¹ížë§ 1ë¡ ë°êŸžë©Ž ììê° ëë€ë ì¥ì ìŽ ìë€. ê·žë¬ë ë ì륌 ëíì ë 2ì§ìë¡ 0ìŽ ëì§ ìëë€ë ê²ê³Œ 0ìŽ ëê°(0, -0)졎ì¬íë€ë ëšì ìŽ ìë€. ê²ë€ê° 2ì§ìê° ìŠê°í ë 1ì§ ììë ê°ìíë€.
2ì 볎ìë²
ìŽë€ ìì ânì 볎ìâë ëíì ë nìŽ ëë ì
륌 ë§íë€. 7ì â10ì 볎ìâë 3ìŽê³ , 3ì â10ì 볎ìâë 7ìŽë€. 3곌 7ì â10ì 볎ìì êŽê³âì ìë€ê³ íë€. â2ì 볎ì êŽê³â ìì, ëíŽì 2ê° ëë ë ìì êŽê³ë¥Œ ë§íë©° 10ì§ì 2ë 2ì§ìë¡ â10âìŽë€. 2ì§ìë¡ â10âì ì늬ì¬ëŠŒìŽ ë°ìíê³ 0ìŽ ëë ì
륌 ë»íë€. ê·žëì â2ì 볎ì êŽê³âì ìë ë 2ì§ì륌 ëí멎 â(ì늬ì¬ëŠŒìŽ ë°ìíê³ ) 0ìŽ ëë€
.â
2ì§ì â0101â곌 â1011âì ìë¡ â2ì 볎ì êŽê³âì ììŒë©° ìŽ ë 2ì§ì륌 ëí멎 0ìŽ ëë€. ìŽ ë§ì ìŽ 10ì§ìë¡ë 0ìŽ ëë €ë©Ž, 2ì§ì â0101âê° 10ì§ìë¡ 5ëê¹. 2ì§ì â1011âì 10ì§ìë¡ -5ìŽìŽìŒ íë€.
<2ì 볎ìë²ìŒë¡ ííí 10ì§ì>
# | 2ì§ì | ë¶ížìë 10ì§ì |
---|---|---|
1 | 0000 | 0 |
2 | 0001 | 1 |
3 | 0010 | 2 |
4 | 0011 | 3 |
5 | 0100 | 4 |
6 | 0101 | 5 |
7 | 0110 | 6 |
8 | 0111 | ìµëê° â 7 |
9 | 1000 | ìµìê° -8 |
10 | 1001 | -7 |
11 | 1010 | -6 |
12 | 1011 | -5 |
13 | 1100 | -4 |
14 | 1101 | -3 |
15 | 1110 | -2 |
16 | 1111 | -1 |
ìŽì²ëŒ ìë¡ â2ì 볎ì êŽê³âì ìë ë 2ì§ìë¡ 5ì -5ì²ëŒ ì ëê°ìŽ ê°ê³ ë¶ížê° ë€ë¥ž ë 10ì§ì륌 íííë ê²ì â2ì 볎ìë²âìŽëŒê³ íë©°, íì¬ ëë¶ë¶ì ìì€í ìŽ â2ì 볎ìë²âìŒë¡ ë¶ížìë ì ì륌 íííë€.
ìì륌 2ì§ìë¡ íííêž°
10ì§ ìì ì ì륌 2ì§ìë¡ ë³ííë €ë©Ž, 뚌ì 10ì§ ìì ì ìì ì ëê°ì 2ì§ìë¡ ë³ííë€. ê·ž ë€ìì ìŽ 2ì§ìì '2ì 볎ì륌 구í멎 ëë€. ì륌 ë€ìŽ '- 5ì 2ì§ ííì 구íë 곌ì ì ë€ì곌 ê°ë€.

ìì ë°©ë²ì ë¶ížê° ë€ë¥Žê³ ì ëê°ìŽ ê°ì ë ì ìì 2ì§ ííìŽ ìë¡ '2ì 볎ìâ êŽê³ì ì ë€ë ê²ì ìŽì©í ê²ìŒë¡ ë³µì¡íŽ ë³ŽìŽì§ë§ ê°ëšíë€. ì ëê°ì ë¶ížë§ ëŒìŽëŽë©Ž ëê³ , 10ì§ì륌 2ì§ìë¡ ë³ííë ë°©ë²ì ìŽë¯ž ë°°ì ê³ , '2ì 볎ìâë¡ ë³ííë ë°©ë²ë ìœë€.
ìì륌 2ì 볎ì 구íêž°
â1ì 볎ìâë 0ì 1ë¡, 1ì 0ìŒë¡
ë§ ë°êŸžë©Ž ëë¯ë¡ 구íêž° ìœë€.
ì륌 ë€ìŽ, 2ì§ì â0101âì â1ì 볎ìâë â1010âìŽë€. ì¬êž°ì 1ì ëíêž°ë§ í멎 2ì 볎ìê° ëë€.

(1) ììì ì ëê°ì 2ì§ìë¡ ë³ííë€.
: -5ì ì ëê°ìž 5륌 2ì§ìë¡ ë³ííë€. 10ì§ì 5륌 2ì§ìë¡ ë³íí멎 â0101âìŽë€.
(2) (1)ìì 구í 2ì§ìì 1ì 0ìŒë¡ 0ì 1ë¡ ë°êŸŒë€. (1ì 볎ì 구íêž°)
: â0101âìì â1010âìŽ ëë€.
(3) (2)ì 결곌ì 1ì ëíë€. (2ì 볎ì 구íêž°, 1ì 볎ì +1)
: â1010âì 1ì ëí멎 â1011âìŽ ëê³ , ìŽê²ìŽ -5ì 2ì§ ííìŽë€.
4. Ʞ볞í(primitive type)
4.1 ë ŒëŠ¬í - boolean
ë ŒëŠ¬íìë boolean í ê°ì§ë°ì ìë€. booleaní ë³ììë trueì false ì€ íë륌 ì ì¥í ì ììŒë©° Ʞ볞ê°(default)ë falseìŽë€.
- ëëµ(yes/no), ì€ìì¹(on/off) ë±ì ë ŒëŠ¬êµ¬íì ì£Œë¡ ì¬ì©ëë€.
- ë ê°ì§ì ê°ë§ì ííí멎 ëë¯ë¡ 1 bitë§ìŒë¡ë ì¶©ë¶íì§ë§, ìë°ììë ë°ìŽí°ë¥Œ ë€ë£šë ìµìëšìê° byteìŽêž° ë묞ì, booleanì í¬êž°ê° 1byteìŽë€.
4.2 묞ìí - char
char ch = 'A' // 묞ì 'A'륌 char íì
ì ë³ì chì ì ì¥.
ìì 묞ì¥ì ë³ìì, 묞ì'ê° ì ì¥ëë ê² ê°ì§ë§, ì¬ì€ì 묞ìê° ìë '묞ìì ì ëìœë (ì ì)ê° ì ì¥ëë€. 컎íší°ë ì«ìë°ì 몚륎Ʞ ë묞ì 몚ë ë°ìŽí°ë¥Œ ì«ìë¡ ë³ííì¬ ì ì¥íë ê²ìŽë€. 묞ì Aì ì ëìœëë 65ìŽë¯ë¡, ë³ì chìë 65ê° ì ì¥ëë€.

ê·žëì 묞ì 늬í°ëŽ ëì 묞ìì ì ëìœë륌 ì§ì ì ì¥í ìë ìë€. ìëì ë 묞ì¥ì ëìŒí 결곌륌 ì»ëë€.
char ch = 'A' // 묞ì 'A'륌 char íì
ì ë³ì chì ì ì¥
char ch = 65; // 묞ìì ìœë륌 ì§ì ë³ì chì ì ì¥
char ch = 'A'; // char ch = 65;
int code = (int) ch; // chì ì ì¥ë ê°ì intíì
ìŒë¡ ë³ííì¬ ì ì¥íë€.
System.out.printf("%c = %d(%#X)\n", ch, code, code); // A = 65(0X41)
char hch = 'ê°';
System.out.printf("%c = %d(%#X)\n", hch, (int)hch, (int)hch); // ê° = 44032(0XAC00)
í¹ì 묞ì ë€ë£šêž°
ì묞ì ìŽìžì tabìŽë backspace ë±ì í¹ì묞ì륌 ì ì¥íë €ë©Ž, ìëì ê°ìŽ ì¡°êž í¹ë³í ë°©ë²ì ì¬ì©íë€.
í¹ì 묞ì | 묞ì 늬í°ëŽ |
---|---|
tab | \t |
backspace | \b |
form feed | \f |
new line | \n |
carriage return | |
ìì¬ëì¬(\) | \\ |
ììë°ìŽí | \â |
í°ë°ìŽí | \â |
ì ëìœë(16ì§ì)묞ì | \uì ëìœë(ì: char a = â\u0041â |
System.out.println('\'');
System.out.println("abc\t123\b456");
System.out.println('\n'); // ê°í(new line) 묞ì ì¶ë ¥íê³ ê°í
System.out.println("\"Hello\"");
System.out.println("c:\\");
charíì ì ííë°©ì
charíì ì í¬êž°ë 2 byte(=16 bit)ìŽë¯ë¡, 16ì늬ì 2ì§ìë¡ ííí ì ìë ì ìì ê°ììž 65536ê°(=)ì ìœë륌 ì¬ì©í ì ììŒë©°, charí ë³ìë ìŽ ë²ì ëŽì ìœë ì€ í ë륌 ì ì¥í ì ìë€. ì륌 ë€ìŽ. 묞ì 'A'륌 ì ì¥í멎, ìëì ê°ìŽ 2ì§ì â0000000001000001â(10ì§ìë¡ 65)ë¡ ì ì¥ëë€.
short íì ì ííë²ì : -
 ~  -1 (-32768~32767)
char íì ì ííë²ì : 0 ~
-1 (0~65535)
charíì ì ì ì¥ëë ê°ìž ì ëìœëë 몚ë ìì(0 í¬íš)ìŽë¯ë¡ â0~65535âì ë²ì륌 ê°ì§ë©°, ì ìíìž âshortâì ì ë°ì ììííì ì¬ì©íë¯ë¡ â-32768~32767âì ë²ìë¡ ê°ëë€.
ë€ì곌 ê°ìŽ ë³ì chì Sì 'Aâì 65륌 ì ì¥í멎, ë ë€ 2ì§ìë¡ ëê°ì ê°ìŽ ì ì¥ëë€. 컎íší°ë 몚ë ê°ì 0곌 1ë¡ ë°êŸžìŽ ì ì¥íêž° ë묞ìŽë€.
char ch = 'A';
short s = 65;
ê·žë°ë°ë ë ë³ìì ê°ì ì¶ë ¥íŽë³Žë©Ž ê²°ê³Œê° ë€ë¥Žë€. printin()ì ë³ìì íì ìŽ ì ìí ìŽë©Ž ë³ìì ì ì¥ë ê°ì 10ì§ìë¡ íŽìíì¬ ì¶ë ¥íê³ , 묞ìíìŽë©Ž ì ì¥ë ì«ìì íŽë¹í ë ì ëìœë 묞ì륌 ì¶ë ¥íêž° ë묞ìŽë€.
System.out.println(ch); // Aê° ì¶ë ¥ëë€.
System.out.println(s); // 65ê° ì¶ë ¥ëë€.
ìŽì²ëŒ ê°ì ìŽë»ê² íŽìíëëì ë°ëŒ ê²°ê³Œê° ë¬ëŒì§ë¯ë¡ ê°ë§ìŒë¡ë ê°ì íŽìí ì ì ë€. ê°ì íì ê¹ì§ ìììŒ ì¬ë°ë¥Žê² íŽìí ì ìë ê²ìŽë€. ì륌 ë€ìŽ '1231'ìŽëŒë ê°ìŽ ìì ë, ìŽ ê°ì íì ì 몚륎멎, ìŽ ê°ì 'ì²ìŽë°±ìŒììŒ'ë¡ íŽìíŽìŒí ì§, ìë멎 12ì 31ìŒìŽë 12ì 31ë¶ìŒë¡ íŽìíŽìŒ í ì§ ì ì ìë€.
ìžìœë©ê³Œ ëìœë©(encoding & decoding)
컎íší°ê° ì«ìë°ì 몚륎Ʞ ë묞ì 묞ìê° ì«ìë¡ ë³íëìŽ ì ì¥ëë€ë ê²ì ìê² ëë°, ê·žë¬ë©Ž ëë첎 ìŽë€ êž°ì€ì ìí ê²ìŒê¹? ë°ë¡ ìëì ì€ë¥žìªœì ìë íì ìí ê²ìžë°, ìŽ ìœëíë 'ì ëìœë(unicode)âìŽë€.
ìì 귞늌ìì ì€ë¥žìªœ í륌 볎멎, 묞ì 'A'ì ì ëìœëê° 65ìž ê²ì ì ì ìë€. ê·žëì 묞 ì'A'륌 ì ëìœëë¡ ìžìœë©í멎 65ê° ëë ê²ìŽë€. ë°ëë¡ 65륌 ì ëìœëë¡ ëìœë© í멎 묞ì A'ê° ëë€.
묞ì ìžìœë©(edcoding) : 묞ì륌 ìœëë¡ ë³ííë ê² (묞ì â ìœë)
묞ì ëìœë©(decoding) : ìœë륌 묞ìë¡ ë³ííë ê² (ìœë â 묞ì)
ð¡Â ì°žê³ | âencodeâë â~ì ìœëííë€.â ëë â~ì ìížííë€.âëŒë ë»ìŽë€.
ë¹ì°í ìêž°ì§ë§ ìŽë»ê² ìžìœë©ì íëì§ ìììŒ ëìœë©ìŽ ê°ë¥íë€. ë§ìŒ ìžìœë©ìì ì¬ì©ë ìœëíì ëìœë©ì ì¬ì©ë ìœëíê° ë€ë¥Žë©Ž ìë±í êžìë€ë¡ ë°ëìŽ ëíë ê²ìŽë€. ì¹ìíì íë€ê° íìŽì§ ì ì²Žê° ìì볌 ì ìë ìŽìí êžìë€ë¡ ê°ë ì°¬ 겜íìŽ ì ìŽë íë ë²ì¯€ì ìì í ë°, ê·ž ìŽì ë íŽë¹ html 묞ìì ìžìœë©ì ì¬ì©ë ìœëíì ì¹ëžëŒì°ì žì ì€ì ìŽ ë§ì§ ììììŽë€.
ëë¶ë¶ì ê²œì° ì¹íìŽì§(html)ì ìžìœë© ì ë³Žê° í¬íšëìŽ ììŽì ì¹ëžëŒì°ì ê° ì¬ë°ë¥Žê² ëìœë©íì§ë§, ì¹ëžëŒì°ì ì ìžìœë© ì€ì ìŽ ì¹íìŽì§ì ìžìœë©ê³Œ ë€ë¥ž ê²œì° êžìê° ìì볌 ì ìê² ê¹šì žì ëíëë€. ìëì 귞늌ì ì¹ëžëŒì°ì ì ìžìœë©ì âì€êµìŽ ë²ì²Žâë¡ ì§ì íì¬ íêžë¡ ìì±ë ì¹íìŽì§ê° ìì볌 ì ìë 묞ìë€ë¡ íìë ê²ìŽë€.
4.3 ì ìí - byte, short, int, long
byte(1) < short(2) < int(4) < long(8)
ì ìíì íííì곌 ë²ì
ìŽë€ ì§ë²ì 늬í°ëŽì ë³ìì ì ì¥íŽë ì€ì ë¡ë 2ì§ìë¡ ë°ëìŽ ì ì¥ëë€. ìŽ 2ì§ìê° ì ì¥ëë íìì í¬ê² ì ìí곌 ì€ìíìŽ ììŒë©°, ì ìíì ë€ì곌 ê°ì íììŒë¡ ì ì¥ëë€.

몚ë ì ìíì ë¶ížìë ì ìíìŽë¯ë¡ ìŒìªœì 첫 ë²ì§ž ë¹ížë¥Œ âë¶íž ë¹íž(sign bit)âë¡ ì¬ì©íê³ , ëëšžì§ë ê°ì íííëë° ì¬ì©íë€.
ì ìíì íííì(n bit) | ì¢ ë¥ | ê°ì ê°ì |
---|---|---|
n-1 bit | 0, ìì | 2 |
n-1 bit | ìì | 2 |
ê·žëì ì ìíì íì ì í¬êž°ë§ ì멎, ìµëê°ê³Œ ìµìê°ì ìœê³ ê³ì°íŽëŒ ì ìë€.
në¹ížë¡ ííí ì ìë ë¶ížìë ì ìì ë²ì : -2
 ~ 2-1
ìì ë²ìì ìµëê°ìì 1ì 빌ë ìŽì ë ë²ìì 0ìŽ í¬íšëêž° ë묞ì. ì륌 ë€ìŽ byteì ê²œì° í¬êž°ê° 1byte(=8 bit)ìŽë¯ë¡, byte íì ì ë³ìì ì ì¥í ì ìë ê°ì ë²ìë â-128~127âìŽë€.

ì ìíì ì íêž°ì€
byteë shortë³Žë€ int륌 ì¬ì©íë ê²ìŽ ì¢ë€. byteì shortìŽ intë³Žë€ í¬êž°ê° ììì ë©ëªšëŠ¬ë¥Œ ì¡°êž ë ì ìœí ìë ìì§ë§, ì ì¥í ì ìë ê²ì ë²ìê° ìì ížìŽëŒì ì°ì° ì ì ë²ì륌 ëìŽì ì못ë 결곌륌 ì»êž°ê° ìœë€.
ê·žëŠ¬ê³ JVMì íŒì°ì°ì ì€í(operand stack)ìŽ íŒì°ì°ì륌 4 byteëšìë¡ ì ì¥íêž° ë묞ì í¬êž°ê° 4 byteë³Žë€ ìì ìë£í(byte, short)ì ê°ì ê³ì°í ëë 4 byteë¡ ë³ííì¬ ì°ì°ìŽ ìíëë€. ê·žëì ì€íë € int륌 ì¬ì©íë ê²ìŽ ë íšìšì ìŽë€.
ì ìíì ì€ë²íë¡ì°
ìë 2ì§ì â1111âì 1ì ëí멎 â10000âìŽ ëì§ì§ë§, 4bit 2ì§ìì ìµëê°ìž â1111â1ì 1ì ëí멎 â000âìŽ ëë€. ìŠ 5ì늬ì 2ì§ì â10000âì€ìì íì 4bitë§ ì ì¥íê² ëë ê²ìŽë€. ìŽì²ëŒ íŽë¹ íì ìŽ ííí ì ìë ê°ì ë²ì륌 ëìŽìë ê²ì ì€ë²íë¡ì°(overflow)ëŒê³ íë€.
ì€ë²íë¡ì°ê° ë°ìíë€ê³ íŽì ìë¬ê° ë°ìíë ê²ì ìëë€. ë€ë§ ììíë 결곌륌 ì»ì§ 못í ë¿ìŽë€. ì ìŽë¶í° ì€ë²íë¡ì°ê° ë°ìíì§ ìê² ì¶©ë¶í í¬êž°ì íì ì ì ííŽì ì¬ì©íŽìŒ íë€.

ìµìê° -1 â ìµëê°
ìëì 귞늌곌 ê°ìŽ ìµìê°ê³Œ ìµëê°ì ìŽìŽ ëìë€ê³ ìê°í멎 ì€ë²íë¡ì°ì 결곌륌 ë ìŽíŽíêž° ìœë€.

4bit 2ì§ìì ìµìê°ìž â0000âë¶í° ììíŽì 1ì© ê³ì ìŠê°íë€ ìµëê°ìž â1111âì ëìŒë©Ž ë€ì â0000âìŽ ëë€. ê·žëì ê°ì 묎íí 1ì© ìŠê°ììŒë â0000â곌 â1111âì ë²ì륌 ê³ì ë°ë³µíê² ëë€.
ë¶ížìë ì ìì ì€ë²íë¡ì°
ë¶ížìë ì ìì ë¶ížìë ì ìë ííë²ì ìŠ, ìµëê°ê³Œ ìµìê°ìŽ ë€ë¥Žêž° ë묞ì ì€ë²íë¡ì°ê° ë°ìíë ìì ìŽ ë€ë¥Žë€. ë¶ížìë ì ìë 2ì§ìë¡ â0000âìŽ ë ë ì€ë²íë¡ì°ê° ë°ìíê³ , ë¶ížìë ì ìë ë¶ížë¹ížê° 0ìì 1ìŽ ë ë ì€ë²íë¡ì°ê° ë°ìíë€.
ch - OverflowEx.java
short sMin = -32768; short sMax = 32767; char cMin = 0; char cMax = 65535; System.out.println("sMin = " + sMin); System.out.println("sMin - 1 = " + (short) (sMin-1)); System.out.println("sMax = " + sMax); System.out.println("sMax + 1 = " + (short) (sMax+1)); System.out.println("cMin = " + (int) cMin); System.out.println("cMin-1 = " + (int) (--cMin)); System.out.println("cMax = " + (int)cMax); System.out.println("cMax+1= " + (int)++cMax);
sMin = -32768 sMin - 1 = 32767 sMax = 32767 sMax + 1 = -32768 cMin = 0 cMin-1 = 65535 cMax = 65535 cMax+1= 0

ê²°ë¡ ì ìŒë¡ ì ìí ë³ì륌 ì ìží ëë intíì
ìŒë¡ íê³
, intì ë²ì(ìœ Â±20ìµ)륌 ëìŽìë ì륌 ë€ë€ìŒí ëë long
ì ì¬ì©í멎 ëë€. ê·žëŠ¬ê³ 1 byteë shortì ì±ë¥ë³Žë€ ì ì¥ê³µê°ì ì ìœíë ê²ìŽ ë ì€ìí ë ì¬ì©íì.
4.4 ì€ìí - float, double
ì€ìíì ë²ìì ì ë°ë
ì€ìíì ì€ì륌 ì ì¥íêž° ìí íì ìŒë¡ floatì double, ë ê°ì§ê° ììŒë©° ê° íì ì ë³ìì ì ì¥í ì ìë ê°ì ë²ìë ìëì ê°ë€.
íì | ì ì¥ ê°ë¥í ê°ì ë²ì(ìì) | ì ë°ë | í¬êž°(bit/byte) |
---|---|---|---|
float | 1.4 X 10 ~ 3.4 X 10 | 7ì늬 | 32/4 |
double | 4.9 X 10 ~ 1.8. X 10 | 15ì늬 | 64/8 |
ìì íë 'ìì ë²ì'ë§ ì ì ê²ìŒë¡, ìŽ ë²ìì '-'ë¶ížë¥Œ ë¶ìŽë©Ž ìì ë²ìê° ëë€. ì륌 ë€ìŽ floatíì ìŒë¡ ííê°ë¥í ìì ë²ìë â-1.4 X 10 ~ -3.4 X 10â ë€. floatíì ìŒë¡ ííê°ë¥í ìì ë²ìì ìì ë²ì륌 íšê» 귞늌ìŒë¡ 귞늬멎 ë€ì곌 ê°ë€.
<float íì ìŒë¡ ííí ì ìë ê°ì ë²ì>

ìŠ, float íì ì ííë²ìë â-3.4 X 10 ~ 3.4 X 10âìŽì§ë§, -1.4 X 10 ~ 1.4 X 10â ë²ì(0ì ì ìž)ì ê°ì ííí ì ìë€. ì€ìíì ììì ìë íííŽìŒ íë¯ë¡ âìŒë§ë í° ê°ì ííí ì ìëê°âë¿ë§ ìëëŒ âìŒë§ë 0ì ê°ê¹ê² ííí ì ìëê°âë ì€ìíë€.
ì ìí곌 ë¬ëЬ ì€ìíììë ì€ë²íë¡ì°ê° ë°ìí멎 ë³ìì ê°ì â묎íë(infinity)âê° ëë€.
ê·žëŠ¬ê³ ì ìíìë ìë âìžëíë¡ì°(underflow)ê° ìëë°â âìžëíë¡ì°âë ì€ìíìŒë¡ ííí ì ìë ì죌 ìì ê°, ìŠ ìì ìµìê°ë³Žë€ ìì ê°ìŽ ëë 겜ì°ë¥Œ ë§íë€. ìŽ ë ë³ìì ê°ì 0ìŽëë€.
4byteì ì ìë¡ë ìœ â±2X10âì ê°ë°ì ííí ì ìëë°, ìŽë»ê² ê°ì 4byteë¡ â±3.4X10â곌 ê°ìŽ í° ê°ì ííí ì ìë ê²ìŒê¹? ê·ž ìŽì ë ë°ë¡ ê°ì ì ì¥íë íììŽ ë€ë¥Žêž° ë묞ìŽë€.

ì 귞늌ì int íì 곌 float íì ì íííìì ë¹êµí ê²ìžë°, int íì ì âë¶ížì ê°â, ë ë¶ë¶ìŒë¡ ìŽë£šìŽì žìì§ë§, float íì 곌 ê°ì ì€ìíì âë¶íž(S), ì§ì(E), ê°ì(M)â, ìž ë¶ë¶ìŒë¡ ìŽë£šìŽì ž ìë€. ìŠ, â2ì ì§ê³±ì ê³±í íí(±M X 2)âë¡ ì ì¥íêž° ë묞ì ìŽë ê² í° ë²ìì ê°ì ì ì¥íë ê²ìŽ ê°ë¥í ê²ìŽë€.
ê·žë¬ë ì ìí곌 ë¬ëЬ ì€ìíì ì€ì°šê° ë°ìí ì ìë€ë ëšì ìŽ ìë€. ê·žëì ì€ìíìë ííí ì ìë ê°ì ë²ìë¿ë§ ìëëŒ âì ë°ë(precision)âë ì€ìí ìììŽë€.
float íì ì ì ë°ëê° 7ì늬ìžë°, ìŽê²ì âa X 10â(1â€a<10)ì ííë¡ ííë â7ì늬ì 10ì§ì륌 ì€ì°šììŽ ì ì¥í ì ìë€âë ë»ìŒë¡ ìëì ìž ê°ì float íì ì ë³ìì ì ì¥íì ë ì€ì°šììŽ ì ì¥í ì ìë€.
0.00001234567 = 1.234567 X 10

1234567000 = 1.234567 X 10

ë§ìŒ 7ì늬 ìŽìì ì ë°ëê° íìíë€ë©Ž, ë³ìì íì ì doubleë¡ íŽìŒ íë€.(double ì ë§ë 15ì늬)
ì€ìí ê°ì ì ì¥í ë, float íì ìŽ ìë double íì ì ë³ì륌 ì¬ì©íë 겜ì°ë ëë¶ë¶ ì ì¥íë €ë âê°ì ë²ìâëë¬žìŽ ìëëŒ âë³Žë€ ëì ì ë°ëâê° íìíŽììŽë€.
+) doubleìŽëŒë ìŽëŠì floatë³Žë€ ìœ 2ë°°(double)ì ì ë°ë륌 ê°ëë€ë ì믞ìì ë¶ì¬ì§ ê²ìŽë€.
float : ì°ì°ìëâ, ë©ëªšëЬâ(ë©ëªšëЬ ì ìœ)
double : ëì ì ë°ëâ, ë í° ê°ì ë²ìâ
ch2 - FloatEx1.java
float f = 9.12345678901234567890f; float f2 = 1.2345678901234567890f; double d = 9.12345678901234567890d; System.out.printf(" 123456789012345678901234%n"); System.out.printf("f : %f%n", f); // ììì ìŽí 6ì§žì늬ê¹ì§ ì¶ë ¥. System.out.printf("f : %24.20f%n", f); System.out.printf("f2 : %24.20f%n", f2); System.out.printf("d : %24.20f%n", d);
ì€ìí ê°ì ì¶ë ¥í ëë printf ë©ìëì ì§ìì â%fâ륌 ì¬ì©íë€. â%fâë Ʞ볞ì ìŒë¡ ììì ìŽí 6ì늬ê¹ì§ë§ ì¶ë ¥íë¯ë¡, 7ë²ì§ž ì늬ìì ë°ì¬ëŠŒëìŽ â9.123457âìŽ ëìë€.
System.out.println("f : %f\n", f); // f : 9.123457
ìì ë°°ìŽ ê²ì²ëŒ, â%24.20fâë ì 첎 24ì늬 ì€ìì 20ì늬ë ììì ìŽíì ì륌 ì¶ë ¥íëŒë ë»ìŽë€.

ìì 귞늌ì 볎멎 ì€ì ë¡ ì ì¥ë ê°ì â9.1234569549560550000âìžë° ìë€ì ë¹ìëŠ¬ê° ê³µë°±ê³Œ 0ìŒë¡ ì±ìì§ ê²ì ì ì ìë€.
(ìë ê°)
9.12345678901234567890
â
(ì ì¥ë ê°)
9.1234569549560550000
floatíì ì ë³ì fì ì ì¥íë €ë ìëì ê°ì â9.12345678901234567890âìŽì§ë§ ì ì¥ê³µê°ì íê³ë¡ ì€ì°šê° ë°ìíì¬ ì€ì ì ì¥ë ê°ì â9.1234569549560550000âìŽë€.
ì ë°ëê° 7ì늬ìŽë¯ë¡ ìëì ê°ìì 7ì늬ì ê°ë§ ì€ì°šììŽ ì ì¥ë ê²ìŽë€.
System.out.printf("f2 : %24.20f%n", f2); // f2 : 1.23456788063049320000
ìì ê°ìŽ ê°í¹ ìëì ê°ê³Œ 8ì늬ìŽì ìŒì¹íë 겜ì°ë ìì§ë§ íì ê·žë° ê²ì ìëêž° ë묞ì ìŽë° 결곌륌 êž°ëíŽìë ì ëë€.
ì€ìíì ì ì¥ë°©ì
ìì ìžêží ë°ì ê°ìŽ ì€ìíì ì ìí곌 íííììŽ ë¬ëŒì, ì€ìíì ê°ì ë¶ëììì ì(floating point)ì ííë¡ ì ì¥íë€. ë¶ëììì ìë ì€ì륌 â±M X

âì ê° ì ííë¡ íííë ê²ì ë§íë©°, ë¶ëììì ìë ë¶íž(Sign), ì§ì(Exponent), ê°ì (Mantissa), 몚ë ìž ë¶ë¶ìŒë¡ ìŽë£šìŽì ž ìë€.
ê·žëì ë¶ëììì ìë ë€ì곌 ê°ìŽ ìž ë¶ë¶ìŒë¡ ëëìŽ ì ì¥ëë€.

<ì€ì íííìì êµ¬ì± ìì>
êž°íž | ì믞 | ì€ëª |
---|---|---|
S | ë¶íž(Sign bit) | 0ìŽë©Ž ìì, 1ìŽë©Ž ìì |
E | ì§ì(Exponent) | ë¶ížìë ì ì, ì§ìì ë²ìë -127 ~ 128(float), -1023 ~ 1024(double) |
M | ê°ì(Mantissa) | ì€ì ê°ì ì ì¥íë ë¶ë¶ 10ì§ìë¡ 7ì늬(float), 15ì늬(double)ì ì ë°ëë¡ ì ì¥ ê°ë¥ |
- ë¶íž(Sign bit)
âSâë ë¶ížë¹íž(sign bit)륌 ì믞íë©° 1 bitìŽë€. ìŽ ê°ìŽ 0ìŽë©Ž ìì륌, 1ìŽë©Ž ìì륌 ì믞 íë€. ì ìí곌 ë¬ëЬ '2ì 볎ìë²'ì ì¬ì©íì§ ìêž° ë묞ì ìì ì€ì륌 ìì ì€ìë¡ ë°êŸžë €ë©Ž ê·žì ë¶ížë¹ížë§ 0ìì 1ë¡ ë³ê²œí멎 ëë€.
- ì§ì(Exponent)
âEâë ì§ì륌 ì ì¥íë ë¶ë¶ìŒë¡ floatì 겜ì°, 8bitì ì ì¥ê³µê°ì ê°ëë€. ì§ìë âë¶ížìë ì ìâìŽê³ 8bitë¡ë 몚ë 2(=256)ê°ì ê°ì ì ì¥í ì ììŒë¯ë¡, â-127~128âì ê°ìŽ ì ì¥ëë€. ìŽ ì€ìì -127곌 128ì âì«ì ìë(Nan, Not a Number)âìŽë âìì 묎íë(POSITIVE_INFINITY)â âìì 묎íë(NEGATIVE_INFINITY)âì ê°ìŽ í¹ë³í ê°ì ííì ìíŽ ììœëìŽ ììŽ ì€ì ë¡ ì¬ì© ê°ë¥í ì§ìì ë²ìë â-126~127âìŽë€. ê·žëì ì§ìì ìµëê°ìŽ 127ìŽë¯ë¡ floatíì ìŒë¡ ííí ì ìë ìµëê°ì 2ìŽê³ , 10ì§ìë¡ ìœ 10ìŽë€. ê·žë¬ë floatì ìµìê°ì ê°ìì ë§ì§ë§ ìëŠ¬ê° 2ìŽë¯ë¡ ì§ìì ìµìê°ë³Žë€ 2ï»¿ë°°ë€ ë ìì ê°, ìœ ï»¿ìŽë€.
- ê°ì(Mantissa)
âMâì ì€ì ê°ìž ê°ì륌 ì ì¥íë ë¶ë¶ìŒë¡ floatì 겜ì°, 2ì§ì 28ì늬륌 ì ì¥í ì ìë€. 2ì§ì 28ì늬ë¡ë ìœ 7ì늬ì 10ì§ì륌 ì ì¥í ì ìëë° ìŽê²ìŽ ë°ë¡ floatì ì ë°ëê° ëë€. doubleì ê°ì륌 ì ì¥í ì ìë ê³µê°ìŽ 52ìëŠ¬ë¡ floatë³Žë€ ìœ 2ë°°ìŽë¯ë¡ doubleìŽ floatë³Žë€ ìœ 2ë°°ì ì ë°ë륌 ê°ë ê²ìŽë€.
ë¶ëììì ì ì€ì°š
ì€ì ì€ìë âíìŽ(3.141592âŠ)âì ê°ì 묎íììê° ì¡Žì¬íë¯ë¡, ì ìì ë¬ëЬ ì€ì륌 ì ì¥í ëë ì€ì°šê° ë°ìí ì ìë€. ê²ë€ê° 10ì§ìê° ìë 2ì§ìë¡ ì ì¥íêž° ë묞ì 10ì§ìë¡ë ì íìììŽëëŒë, 2ì§ìë¡ ë³íí멎 묎íììê° ëë 겜ì°ë ìë€. 2ì§ìë¡ë 10ì§ ìì륌 ì íí íííêž° ìŽë µêž° ë묞ìŽë€.
9 . 1234567 (10)
1001. 00011111001101011011011... (2)
ììì ì ì ìë¯ìŽ 9.1234567ì 10ì§ìë¡ ì íììì§ë§, 2ì§ìë¡ë 묎íìììŽë€. ìŠ, 2ì§ìë¡ë ìŽ ê°ì ì íí íííì§ ëª»íë€ë ìêž°ë€. ì¬êž°ìë¶í° ë²ìš ì€ì°šê° ë°ìíë€. ë¹ë¡ 2ì§ìë¡ ì íììëŒë, ê°ì륌 ì ì¥í ì ìë ì늬ìê° íì ëìŽ ììŒë¯ë¡ ì ì¥ëì§ ëª»íê³ ë²ë €ì§ë ê°ë€ìŽ ììŒë©Ž ì€ì°šê° ë°ìíë€.
2ì§ìë¡ ë³íë ì€ì륌 ì ì¥í ëë 뚌ì â1.xxx X 2âì ííë¡ ë³ííëë°, ìŽ ê³Œì ì ì ê·íëŒê³ íë€.
ì ê·íë 2ì§ ì€ìë íì â1.âìŒë¡ ììíêž° ë묞ì, â1.âì ì ìží 23ì늬ì 2ì§ìê° ê°ì(Mantissa)ë¡ ì ì¥ëê³ ê·ž ìŽíë ìë €ëê°ë€. ì§ìë êž°ì ë²ìŒë¡ ì ì¥ëêž° ë묞ì ì§ììž 3ì êž°ì ìž 127ì ëí 130ìŽ 2ì§ìë¡ ë³íëìŽ ì ì¥ëë€. 10ì§ì 130ì 2ì§ìë¡ â10000010âìŽë€.
5. íë³í
5.1 íë³í(ìºì€í , casting)ìŽë?
5.2 íë³í ë°©ë²
íë³í ë°©ë²ì ì죌 ê°ëšíë€. íë³ííê³ ì íë ë³ìë 늬í°ëŽì ìì ë³ííê³ ì íë íì ì êŽížì íšê» ë¶ì¬ì£Œêž°ë§ í멎 ëë€.
ì¬êž°ì ì¬ì©ëë êŽíž()ë âìºì€íž ì°ì°ìâ ëë âíë³í ì°ì°ìâëŒê³ íë©°, íë³íì âìºì€í (casting)âìŽëŒê³ ë íë€.
<Ʞ볞íê°ì íë³í>
ë³í | ìì | 결곌 |
---|---|---|
int â char | (char) 65 | âAâ |
char â int | (int) âAâ | 65 |
float â int | (int) 1.6f | 1 |
int â float | (float) 10 | 10.0f |
ð¡Â float íì
ì ê°ì int íì
ìŒë¡ ë³íí ë ììì ìŽíì ê°ì ë°ì¬ëŠŒìŽ ìë
ë²ëŠŒ
ìŒë¡ ì²ëЬëë€ë ì ì ëì¬ê²šë³Žì.
5.3 ì ìíê°ì íë³í
- í° íì
â ìì íì
intíì (4byte) â byteíì (1byte) ìŒë¡ ë³ííë 겜ì°ë ìëì ê°ìŽ í¬êž°ì ì°šìŽë§íŒ ìë €ëê°ë€. ê·žëì 겜ì°ì ë°ëŒ âê° ìì€(loss of data)âìŽ ë°ìí ì ìë€.
- ìì íì
â í° íì
(ìì)
byteíì (1byte) â intíì (4byte) ìŒë¡ ë³ííë 겜ì°ë ì ì¥ê³µê°ì ë¶ì¡±ìŒë¡ ìë €ëê°ë ìŒìŽ ììŒë¯ë¡ ê° ìì€ìŽ ë°ìíì§ ìëë€. ê·žëŠ¬ê³ ëëšžì§ ê³µê°ì 0ëë 1ë¡ ì±ìì§ë€.
- ìì íì
â í° íì
(ìì)
ìëì ê°ì ì±ì°ê³ ëšì ê³µê°ì 0ìŒë¡ ì±ì°ë ê² ë³ŽíµìŽì§ë§, ë³ííë €ë ê°ìŽ ìììž ê²œì°ìë ë¹ ê³µê°ì 1ë¡ ì±ìŽë€. ê·ž ìŽì ë íë³í íìë ë¶ížë¥Œ ì ì§í ì ìëë¡ íêž° ìíŽììŽë€.
ìì ch2 - CastingEx2.java
int i = 10; byte b = (byte) i; System.out.printf("[int -> byte] i = %d -> b = %d\n", i, b); i = 300; b = (byte) i; System.out.printf("[int -> byte] i = %d -> b = %d\n", i, b); // int 32bit, byte 8bit ëŒì ê°ìŽ ìì€ëš b = 10; i = (int) b; System.out.printf("[btye -> int] b = %d -> i = %d\n", b, i); b = -2; i = (int) b; System.out.printf("[btye -> int] b = %d -> i = %d\n", b, i); System.out.println("i = " + Integer.toBinaryString(i)); // 10ì§ ì ì륌 2ì§ ì ìë¡ ë³í
5.4 ì€ìí ê°ì íë³í
5.4 ì ìí곌 ì€ìí ê°ì íë³í
5.6 ìë íë³í
ìë íë³í ê·ì¹
1. booleanì ì ìží ëëšžì§ 7ê°ì Ʞ볞íì ìë¡ íë³íìŽ ê°ë¥íë€.
2. Ʞ볞í곌 ì°žì¡°íì ìë¡ íë³íí ì ìë€.
3. ìë¡ ë€ë¥ž íì ì ë³ìê°ì ì°ì°ì íë³íì íë ê²ìŽ ìì¹ìŽì§ë§, ê°ì ë²ìê° ìì íì ìì í° íì ìŒë¡ì íë³íì ìëµí ì ìë€.
<Ʞ볞íì ìë íë³íìŽ ê°ë¥í ë°©í¥>

ë³Žíµ ìë£íì í¬êž°ê° í° ê²ìŒìë¡ ê°ì ííë²ìê° í¬êž° ë§ë šìŽì§ë§, ì€ìíì ì ìí곌 ê°ì íííë ë°©ììŽ ë€ë¥Žêž° ë묞ì ê°ì í¬êž°ìŒì§ëŒë ì€ìíìŽ ì ìíë³Žë€ íšì¬ ë í° íí ë²ì륌 ê°êž° ë묞ì floatì doubleìŽ ê°ì í¬êž°ìž intì longë³Žë€ ì€ë¥žìªœì ìì¹íë€.
Uploaded by N2T