[java] 정수와 실수 그리고 문자의 표현방식

정수 표현방식
가장 왼쪽 비트인 MSB는 부호를 나타낸다.
0이면 + 1이면 – 를 의미한다.
00000111 = 양의 정수 7 => 일반적인 2진수 계산법에 따른다.

음의 정수 표현방식
양의 정수 표현방식과 다르다.
2의 보수가 음의 정수 표현방식이다.
즉 양의 정수와의 합이 0이 되는 구조
그리고 올림수는 벼려진다.
예를들어 00000001 은 양의 정수 1 을 의미한다.
00000001 의 2의 보수는 11111110 이다.
두수를 더하면 100000000 이 되는데 올림수 1 은 버려진다.
두수의 합이 00000000 즉 0 이 되므로 11111110 은 -1 이 된다.
일종의 약속된 표현방식이라고 생각하자.

정수 자료형에 대해서
자바의 4가지 정수 자료형
byte, short, int, long
CPU는 int형 데이터만 연산이 가능하다.
short형 데이터는 int형 데이터로 자동형변환 후 연산된다.
따라서 연산되어지는 데이터 라면 int 형을 사용한다.
연산보다 데이터 자체의 목적이 강하다면 short와 byte를 사용한다.

실수의 표현
0과 1사이의 실수만 해도 무한대이기 때문에 모든 실수를 표현할 수 없다.
표준 수식으로 근사값을 저장한다.
따라서 오차가 존재한다.

문자표현

자바는 유니코드 규정을 따른다.
유니코드는 문자 하나를 2바이트로 표현한다.
유니코드는 전세계의 문자를 표현할 수 있다.
작은 따옴표로 표현. ex) char c = ‘a’; char c = ‘1’;
char 형 변수에 저장.
실제로 메모리 공간에 저장되는 값은 1과 0의 조합이다.
따라서 그문자에 해당하는 숫자값의 저장이 가능하며
char c = 65;
c는 A 로 출력된다.

public class Ex {

	public static void main(String[] args) {
		
		double num1, num2, result;
		num1 = 1.0000001;
		num2 = 2.0000001;
		result = num1+num2;
		
		System.out.println(num1);
		System.out.println(result);	// 값에 오차가 있다.
		
		char c1 = 'A';
		char c2 = 65;
		System.out.println(c1);	// A 가 출력
		System.out.println(c2); // A 가 출력

		c2='B';
			
		int num3=c1;
		int num4=(int)c2;

		System.out.println(num3);	//유니코드값 출력
		System.out.println(num4);	//유니코드값 출력
	}
}

답글 남기기