4일차 java 연산(2022-12-28)

권단비·2022년 12월 28일
0

IT

목록 보기
3/139

[이진수와 음의 정수 표현법]

[계산]
public class Double {
	public static void main(String[] args) {
		double num1, num2; // 두 개의 변수 동시 선언
		double result;
		num1 = 1.0000001;
		num2 = 2.0000001;
		result = num1 + num2;
		System.out.println(result);
	}
}
[결과값]
3.0000001999999997
⇒기대하는 값 3.0000002가 출력되지 않았다.
 이유는 실수 표현에 오차가 존재하기 때문이다.
 처음과 끝 수를 정해놓고, 소숫점 자리는 근사값의 표현이 저장된다.
 *0.1과 0.2 사이에 있는 숫자는 무한대로 많음.
 *부동 소숫점 방식 & 고정 소숫점 방식

십진수 25를 이진수로 표현

00011001

25/2=12...1
12/2=6...0
6/2=3...0
3/2=1...1
위에서 아래로 읽기⤴

[5 양의 정수 표현]

00000101

[5 음의 정수 표현]

10000101

[음의 정수 계산 방법]

2의 보수법

00000101

↓ 1의 보수(0은 1로, 1은 0으로 변경)

11111010

↓ 또 1을 더함

11111011

⇓ 5의 정수와 2의 보수값을 더함

00000101
11111011

=

00000000

[short와 int]

[계산]
public class Variable {
	public static void main(String[] args) {
		short num1 = 11;
		short num2 = 22;
		short result = num1 + num2;
		System.out.println(result);
	}
}
[결과값]
오류로 인해 결과가 나오지 않는다.
[이유]
*short는 16bit인데, 연산한 결과값은 무조건 int 이상(32bit)으로 돌려주기 때문에 오류가 뜬다.
1. 메모리에 있는 num1, num2 값을 연산을 위해 CPU에 보냄
2. result 연산을 CPU에서 32bit로 계산 후 32bit로 돌려준다.
 ⇒ JVM이 32bit 시스템

[TIP]
32bit와 64bit의 차이
⇒CPU와 RAM을 이어주는 코드 선이 32개 / 64개
⇒RAM을 인식할 수 있는 크기가 다르다
32bit는 4기가가 최대, 2³²
64bit는 256기가가 최대, 2⁶⁴

[상기 계산을 정상적으로 동작하려면]
public class Variable {
	public static void main(String[] args) {
		short num1 = 11;
		short num2 = 22;
		int result = num1 + num2;
		System.out.println(result);
	}
}
[결과값]
33
*short를 전부 int로 변경하거나, result만 int로 변경하는 방법이 있다.

[유니코드]

・아스키코드 : ASCII (American Standard Code for Information Interchange
ex)A=65 / B=66
・유니코드 :

문자가 출력되는 원리 : 숫자와 문자의 1 : 1 매칭

0개의 댓글