목차
0. basic
1. 정수
2. 부동소수점
3. 논리값
4. 문자
5. etc
ex)
6 = 0b0110 (=0B0110) (2진수) //b:binary
10 = 012 (8진수) //0:octa
18 = 0x12 (= 0X12) (16진수)
type명 | 메모리크기 |
---|---|
byte | 1byte |
short | 2byte |
int | 4byte |
long | 8byte |
부동소수점을 2진수로 바꾸는 과정에서 가수부를 표현할때 사용한다.
거의 쓰지 않는다
+4 = 0100
-4 =0100 에 대한 1의 보수
보수 (그 수가 되기 위해 보충해줘야 하는 수) 를 취해서1011
이 -4가 된다.
overflow 수는 버린다
자바에서 정수를 2진수로 바꿀때 사용하는 규칙!!
대부분의 프로그래밍 언어가 이 규칙 사용
+4 = 0100
-4 :0100 에 대한 1의 보수
를 해서 1011
위에 다시 1을 더해서1100
이 -4가 된다.
초과하다 bias(여분으로 초과하는 값)
부동소수점을 2진수로 바꾸는 과정에서 지수부를 표현할 때 사용
ex1)
+4 : 4 + 128 = 132 >> 132를 2진수로 >> 10000100
-4 : -4 + 128 = 124 >> 124를 2진수로 >> 01111100ex2)
k값은 2^(비트수-1)-1 = 2^(4-1)-1 = 8-1 = 7 (4bit메모리 기준)
따라서
+4 >> 4+7 = 11 >> 1011
-4 >> -4+7 = 3 >> 0011
메모리크기
값의 범위
type명 | 메모리크기 |
---|---|
float | 4byte |
double | 8byte |
IEEE-754 규칙
12.375
12 --> 1100
0.375 --> 0.375*2 = 0.75 --> **0**
0.75 *2 = 1.5 --> **1**
0.5 *2 = 1.0 --> **1**
--> **0.011**
12.375 = 1100.011 = 1.100011 * 2^3
- 소수점의 왼쪽은 무조건 1이므로 버린다.
- 부호비트 1비트+ : 0
,- : 1
- 지수(exponent)부 8비트 : Excess-k 규칙에 따라 2진수화 시킨다.
- 가수(mantissa)부 23비트 --> sign-magnitude 규칙에 따라 2진수로바꾼다.
메모리크기
12.375
: 8 byte = double
12.375f
: 4 byte = float
숫자 뒤에 f를 붙여주면 이 수를 4byte
float
로 바꾸라는 명령
값의 범위
= float
32 bit= double
62 bittype명 | 메모리크기 |
---|---|
기본 | 4byte |
배열 | 1byte |
논리값을 2진수로 표현하는 법
true : 0x00_00_00_01 (1)
false : 0x00_00_00_00 (0)
4byte
로 저장한다
단 배열인 경우 :: 1byte만 사용한다.
true : 0x01
false : 0x00
type명 | 메모리크기 |
---|---|
char | 2byte |
최대 128자
최대 256자
영어 : ISO-8859-1 : 1byte
한글 : 2byte
가 :: 1011 0000 1010 0001 >> B0A1
각 :: 1011 0000 1010 0010 >> B0A2
똘 :: 1011 0110 1100 1010 >> B6CA
똠 :: x
똥 :: 1011 0110 1100 1011 >> B6CB
최대 65536자, 한글은 2350자, 나머지는 일본어, 중국어, ...
2byte
기업이 만들었고 국가표준이지만 국제표준은 아님
[초성]
ㄱ :: 00010
ㄲ :: 00011
ㄴ :: 00100
...
[중성]
ㅏ :: 00011
ㅐ :: 00100
ㅑ :: 00101
...
[종성]
ㄱ :: 00010
ㄲ :: 00011
ㄳ :: 00100
...
댄
:: 1 00101 00100 00101
:: 1001 0100 1000 0101
:: 0x9485
한글11172자 + 옛한글, ...
A >>BE
>> 0041 >>LE
>> 4100
각 >>BE
>> AC01 >>LE
>> 01AC
영어권에서는 메모리를 2배로 많이 써서 문제를 제기했다.
유니코드 변형 규칙
8bit로 표현할 수 있는 문자는 예전처럼 그대로 8bit로 표현하기
그 외 문자는 규칙에 따라 변형하자!
한글은 2byte 였는데 3byte로 늘어나버렸다.
가 :: AC00 :: 1010 1100 0000 0000 (UNICODE)
111010~~ 10~~
1110 1010 1011 0000 1000 0000 (UTF-8)
E A B 0 8 0
0xEAB080
그러나 JVM이 문자를 저장할 때는 Unicode를 쓴다.
그러나 국제표준은 UTF-8을 쓴다.
일반적으로 텍스트를 저장할 때는 UTF-8을 쓴다.
문자
16진법 표기시에 대소문자를 구분하지 않는다.
'\uAC00' = '\uac00' = 가
위에서 알아본 4종류가 java의 primitive data type이다
문자열(string)인 String
은 객체(class)이다.
문자열
String 클래스
에 정의된 대로 그 형식에 맞춰 변환한다.문자와 문자열 표기
single quotation은 문자 '하나'만 가능!
'a'는 문자, "a"는 문자열
UTF : Unicode TransForm
encoding(~형식화 하라=코드화) <-> decoding(~로 복원하라)
= 코드화 한걸 풀어라 = codec (=encoding + decoding)
동영상 압축 방법 : MPEG, H.264, ...VP9 //방법 : algorithm
텍스트 와 바이너리
.txt, .java, .html, .css, .js, .xml
문자변환규칙에 따라 저장된 파일
메모장으로 편집가능
.doc, .hwp, .pdf, .avi, .mp3, .jpg, .gif
전용 S/W를 통해서만 편집가능
위에서 말한 문자변환규칙 = character set (= 문자집합)
문자와 코드
CR : Carriage Return
LF : Line Feed
합쳐서 CRLF
줄바꿈 코드
Windows 에서는 CR (1byte), LF(1byte) >>
합쳐서
>> 0D0A
Unix 에서는 LF(1byte) :: 0A
퍼가요옹~~!!!!