안드로이드(6)
-
Java 기본형 4
정수형의 선택기준 변수에 저장하려는 정수형의 범위에 따라 4개의 정수형 중에서 하나를 선택하면 되겠지만, byte나 short보다 int를 사용하도록 하자. byte와 short이 int보다 크기가 작아서 메모리를 조금 더 절약할 수는 있지만, 저장 할 수 있는 값의 범위가 작은 편이라서 연산시에 범위를 넘어서 잘못된 결과를 얻기가 쉽다. 그리고 JVM의 피연산자 스택(operand stack)이 피연산자를 4byte단위로 저장하기 때문에 크기가 4byte보다 작은 자료형(byte, short)의 값을 계산할 때는 4byte로 변환하여 연산이 수행된다. 그래서 오히려 int를 사용하는 것이 더 효율적이다. int 타입의 크기는 4byte(= 32bit)이므로, 표현할 수 있는 정수의 개수는 약 40억이며..
2021.06.01 -
Java 진법 4
음수를 2진수로 표현하기 10진 음의 정수를 2진수로 변환하려면, 먼저 10진 음의 정수의 절대값을 2진수로 변환한다. 그 다음에 이 2진수의 2의 보수를 구하면 된다. 예를 들어 -5의 2진 표현을 구하는 과정은 다음과 같다. 위의 방법은 부호가 다르고 절대값이 같은 두 정수의 2진 표현이 서로 2의 보수 관계에 있다는 것을 이용한 것으로 복잡해 보이지만 간단하다. 절대값은 부호만 떼어내면 되고, 10진수를 2진수로 변환하는 방법은 이미 배웠고, 2의 보수로 변환하는 방법도 쉽다. 이미지의 마지막 2의 보수가 음수의 2진수값이 된다. 그러므로 -5 → 1011(2) 2의 보수 구하기 서로 2의 보수의 관계에 있는 두 수를 더하면 0(자리올림 발생)이 된다. 예를 들어 2진 수 0101의 2의 보수를 구..
2021.05.28 -
Java 진법 3
n진수를 10진수로 변환 어떤 진법의 수라도 10진수로 변환하는 방법은 똑같다. 각 자리의 수에 해당 단위의 값을 곱해서 모두 더하면 된다. 예를 들어 10진수 123은 다음과 같이 풀어쓸 수 있다. 123 = 100 + 20 + 3 = 1 X 100 + 2 X 10 + 3 X 1 = 1 X 10의2승 + 2 X 10의1승 + 3 X 10 마찬가지로 2진수는 다음과 같이 표현할 수 있는데, 각 자리의 다위가 10의 제곱이 아니라 2의 제곱이라는 점을 제외하면 10진수와 동일하다. 8진수와 16진수로 변환하는 방법 역시 동일하다. 1460(8) = 1 x 8의3승 + 4 x 8의2승 + 6 x 8의 1승 + 0 x 8의 0승 = 1 x 512 + 4 x 256 + 6 x 8 + 0 x 1 = 512 + 2..
2021.05.27 -
Java 진법 2
8진법과 16진법 2진법은 오직 0과1, 두 개의 기호만으로 값을 표현하기 떄문에, 2진법으로 값을 표현하면 자리수가 상당히 길어진다는 단점이 있다. 이러한 단점을 보완하기 위해 2진법 대신 8진법이나 16진법을 사용한다. 8진수는 2진수 3자리를, 16진수는 2진수 4자리를 각각 한자리로 표현할 수 있기 때문에 자리수가 짧아져서 알아보기 쉽고 서로 간의 변환방법 또한 매우 간단하다. 2진법 - 0 1 // 2개 8진법 - 0 1 2 3 4 5 6 7 // 8개 10진법 - 0 1 2 3 4 5 6 7 8 9 // 10개 16진법 - 0 1 2 3 4 5 6 7 8 9 A B C D E F // 16개 8진법은 값을 표현하는데 8개의 기호가 필요하므로 0~7개의 숫자를 기호로 사용하면 되지만, 16진법은..
2021.05.26 -
Java 진법 1
10진법과 2진법 우리는 일상속에서 주로 사용하는 것은 10진법이다. 2진법을 알지못하면 컴퓨터의 동작원리나 데이터 처리방식을 온전히 이해할 수 없다. 지금까지 변수에 값을 저장하면 10진수로 저장되는 것처럼 설명을 하였지만, 컴퓨터는 2진수(0과1)밖에 모르기 때문에 아래의 오른쪽과 같이 2진수로 바뀌어 저장된다. 2진수 11001은 10진수로 25이다. int age = 25; age = 25 → age = 11001 이처럼 2진법은 0과 1로만 데이터를 표현하기 떄문에 10진법에 비해 많은 자리수를 필요로한다. 10진수 2와 같이 작은 숫자도 2진수로 표현하려면 2자리가 필요하다. 2진수한자리로는 1보다 큰 값을 표현 할 수 없기 떄문이다. 이것은 10진수에서 9보다 큰 수를 표현하기 위해서는 두자..
2021.05.25 -
Java 상수 2
타입의 불일치 리터럴의 타입은 저장될 변수의 타입과 일치하는 것이 보통이지만, 타입이 달라도 저장범위가 넓은 타입에 좁은 타입의 값을 저장하는것은 허용된다. 예를 들어, double타입에 float리터럴타입을 넣어줘도 에러없이 작동된다 !! double f = 3.14f; O // float d = 3.14d; X 반대로 float타입에 double리터럴을 작동하면? 컴파일 에러가 뜬다!! double은 8byte 총 64bit인데 float은 4byte 총 32bit입니다. 큰타입에 작은 리터럴타입을 넣어줘도 상관은 없지만, 작은 타입에 큰 리터럴은 안된다 이말입니다! 문자 리터럴과 문자열 리터럴 'A'와 같이 작은 따옴표로 문자 하나를 감싼 것을 문자 리터럴이라고한다. 두문자 이상은 큰따옴표로 감싸야..
2021.05.15