.gitignore 파일 설정
ㄴ git 에서 백업 시 특정 파일을 백업하지 않겠다고 작성하는 파일
https://www.toptal.com/developers/gitignore/
ㄴ gitignore.io 에서 git 에서 백업 시 백업하지 않을 특정 파일 목록을 입력하여 자동으로 코드 생성
ㄴ 생성된 코드를 복사하여 VSCode 에 있는 .gitignore 파일에 복사해넣기
** 참고
git 은 한 번 백업을 하면 그 내역을 지울 수 없고, 이미 올라간 것을 숨기는 정도는 가능
git => 조작을 못 하게 하는 것이 목표
git add
ㄴ add 는 백업 명단을 작성하는 명령어임
ㄴ add 를 실행 할 경우 삭제한 내역도 백업됨
git commit
ㄴ add 한 내역을 원격저장소로 저장
git pull
ㄴ 원격저장소에 업데이트 되어있는 최신 버전으로 local 저장소를 업데이트
문자열
ㄴ 문자열은 ""(double quotation) 안에 설정하고, ''(single quotation) 안에 설정하면 문법 오류가 발생함
ㄴ 문자를 ""(double quotation) 안에 설정하면 해당 문자는 문자열로 인식됨
ㄴ ""(double quotation) 안에 빈 상태로 설정하면 빈 문자열로 인식됨
ㄴ 문자열은 문자 개수 + α 메모리를 사용함
문자
ㄴ 문자는 ''(single quotation) 안에 설정하고, ''(single quotation) 안에 문자열을 설정하면 문법 오류가 발생함
ㄴ 문자는 2byte 메모리를 사용함
숫자
ㄴ 숫자는 정수와 부동소수점으로 나뉨
ㄴ 정수는 4byte 와 8byte 로 사용 가능한데, 4byte 메모리를 주로 사용하며 약 -21억 ~ +21억의 범위를 가짐
ㄴ 8byte 정수일 경우 숫자 뒤에 L 을 붙이며 소문자 l 은 1과 구분하기 힘든 경우가 있어 L 을 주로 사용하고, 8byte 메모리를 사용하며 -922경 ~ +922경의 범위를 가짐
ㄴ 큰 수에 L 을 붙이지 않으면 error 가 발생함
ㄴ 부동소수점은 4byte 와 8byte 로 사용 가능한데, 4byte 부동소수점일 경우 4byte 메모리를 사용하고 유효자리수(소수점을 제외한 숫자 개수)가 6~7자리를 차지함 => 10.2f, 3.14f 로 표현
ㄴ 8byte 부동소수점은 8byte 메모리를 사용하고 유효자리수(소수점을 제외한 숫자 개수)가 15~16자리를 차지함 => 10.2D / 10.2d 로 표현
논리
ㄴ 논리는 true, false 로 구성되는데, int 크기로 4byte 메모리를 사용함
ㄴ 단, 배열일 경우 1byte 메모리를 사용함
https://docs.oracle.com/javase/specs/jls/se17/html/index.html
ㄴ java language spec 파일에서는 찾지 못함
https://docs.oracle.com/javase/specs/jvms/se7/html/jvms-2.html#jvms-2.3.4
ㄴ java virtual machine spec 파일에서 확인한 결과 JVM 은 Java 프로그래밍 언어의 boolean 배열을 Java 가상 머신 바이트 배열로 인코딩하여 사용하는데, 이때 각 boolean 요소는 8비트(1바이트)로 표현
레퍼런스(주소)
ㄴ c 언어와 달리 java 에서는 표기할 수 없음
ㄴ 위에서 System 은 상자이며, 이를 클래스(class) 라고 함
ㄴ 위에서 out 은 도구이고 객체(object)라고하며, Instance 라고도 함
ㄴ println 은 기능(function)이고, 이는 메서드(method)라고 함
ㄴ 위에서 "홍길동" 은 기능 수행에 필요한 값으로 argument 라고 하고 parameter 라고도 하는데 엄밀히 말하면 둘은 다름
정수 리터럴
ㄴ 숫자로 표현된 정수 값
ㄴ 10진수와 16진수를 가장 많이 사용함
ㄴ 16진수는 2진수를 간결하게 표현할 수 있음
부동 소수점 리터럴
ㄴ 실수 값을 표현하는 데 사용되는 값
ㄴ floating point 는 소수점이 둥둥 떠다니는다는 의미로 부동소수점의 '.' 을 의미함
ㄴ 일반 표기법은 3.14 처럼 표기하는데, 31.4E 처럼 지수 표기법을 사용하여 나타내면 여기서 E는 10의 지수를 의미하며, -1은 지수의 값임
ㄴ '\u' 라는 escape character 를 이용하여 유니코드(unicode) 를 표현할 수 있음
ㄴ '가' 를 유니코드로 표현하면 'AC00' 이고 앞에 escape character 인 '\u' 를 붙여주어 '\uAC00' 으로 표현함
ㄴ 'A' 를 유니코드로 표현하면 '0041' 이고 앞에 escape character 인 '\u' 를 붙여주어 '\u0041' 으로 표현함
ㄴ 문자열 안에 유니코드 표기법을 삽입할 수도 있음
1. Sign-Magnitude 방식
ㄴ Sign-Magnitude 방식은 부동소수점의 가수부 값을 저장할 때 사용함
ㄴ 2진수의 맨 앞 첫 번재는 부호비트임 (1은 음수, 0은 양수를 의미)
2. 1의 보수
ㄴ 양수 값은 그대로 2진수로 변경하면 됨
ㄴ 음수 값은 0은 1로 1은 0으로 뒤집어주면 됨
ㄴ 음수 값은 1의 보수로 저장하고 더했을 때 넘어가는 1을 버린 결과에 1을 더해주면 됨
2. 2의 보수
ㄴ 양수 값은 그대로 2진수로 변경하면 됨
ㄴ 음수 값은 0은 1로 1은 0으로 뒤집어주고 미리 1을 더함
ㄴ 음수 값은 1의 보수로 저장하고 더했을 때 넘어가는 1을 버림
ㄴ 현재 컴퓨터는 2의 보수 방식으로 정수를 다룸
2. Excess - K
ㄴ Excess - K 방식은 부동소수점의 지수부 값을 저장할 때 사용함
ㄴ 2^(비트수-1) - 1 = K 는 IEEE-754 명세에서 사용하고 이는 부동소수점을 2진수로 변환시키는 규칙임
부동소수점의 리터럴 - 2진수로 변경된 것을 확인하기
ㄴ 자바가 부동소수점을 다룰 때 IEEE 754 규칙에 따라 2진수로 변환하는 것을 확인해 보자
Test1.java 파일 컴파일하기
ㄴ javac -d bin/main src/main/java/com/eomcs/lang/ex03/Test1.java
Hex Editor 플러그인 설치
클래스 파일로 부동소수점 값 확인하기
ㄴ Test1.class 를 Hex Editor 로 열어서 12.375의 2진수 값인 0100_0001_0100_0110_0000_0000_0000_0000을 찾아보자
ㄴ 보통 에디터에서는 2진수를 16진수로 바꿔 보여주기 때문에 16진수 값 0x41460000을 찾아보자
부동소수점 정규화 과정
1) 소수점 이상 부분을 2진수로 변환
ㄴ 12 (10진수) => 1100 (2진수)
2) 소수점 이하 부분을 2진수로 변환
ㄴ .375
ㄴ 소수점을 2로 곱하여 나온 결과에서 정수 부분만을 차례대로 표기
ㄴ 소수 부분이 0이거나 반복되면 계산을 멈추기
ㄴ 예: 0.375(10진수)
ㄴ 0.375 * 2 = 0.75 --> 0
ㄴ 0.75 * 2 = 1.5 --> 1
ㄴ 0.5 * 2 = 1.0 --> 1
=> 0.011(2진수) (0 1 1 차례대로)
3) 소수점 이상 2진수와 소수점 이하 2진수 합치기
=> 12(1100) + .375(0.011) = 1100.011
4) 정규화
=> 소수점 위치를 조정하여 가수부와 지수부를 분리
4-1) 소수점 왼쪽에 1이 한개만 남도록 소수점 위치를 이동
=> 1.100011 x 2^3 = 1100.011
4.2) 소수점 앞의 1은 무조건 1이기 때문에 버리기
=> .100011 x 2^3
4.3) 가수부와 지수부로 분리
- 가수부(23비트)
ㄴ Sign-Magnitude로 표현
=> 따라서 음수나 양수나 같은 2진수 값을 가짐
=> 예) 100011
- 지수부(8비트)
ㄴ 2의 제곱승 값
ㄴ Excess-K 로 표현
ㄴ K값은 2^(8-1) - 1 = 2^7 - 1 = 128 - 1 = 127
=> 예) 3(2의 제곱승) + 127(K값; bias) = 130
=> 예) 130 = 10000010(2진수)
4.4) 32비트 메모리에 담기
ㄴ [1:부호비트][8:지수부][23:가수부] = 32비트
ㄴ예) 0_10000010_10001100000000000000000
= 01000001_01000110_00000000_00000000
= 41_46_00_00(16진수)
4.5) 64비트 메모리에 담기
ㄴ [1:부호비트][11:지수부][52:가수부] = 64비트
ㄴ부호비트(1) = 0
- 지수부(11) = 3 + (2**(11-1) - 1) = 3 + (1024 - 1) = 3 + 1023 = 1026
= 100_0000_0010
- 가수부(52) = 100011
=> 예) 0_10000000010_1000110000000000000000000000000000000000000000000000
= 01000000_00101000_11000000_00000000_00000000_00000000_00000000_00000000
= 40_28_c0_00_00_00_00_00(16진수)
'네이버클라우드 > JAVA 웹 프로그래밍' 카테고리의 다른 글
JAVA 6일차 (2023-05-30) 자바 기초 DAY4 (0) | 2023.05.30 |
---|---|
JAVA 5일차 (2023-05-26) 자바 기초 DAY3 (0) | 2023.05.26 |
JAVA 3일차 (2023-05-24) 자바 기초 DAY1 (0) | 2023.05.25 |
JAVA 3일차 (2023-05-24) 프로그래밍 개론 DAY3 (0) | 2023.05.24 |
JAVA 2일차 (2023-05-23) 프로그래밍 개론 DAY2_git (2) | 2023.05.23 |