조건문과 반복문

김재영·2022년 11월 10일
0

항해99 Pre_Onboarding

목록 보기
3/5

4일차

챕터4 - 조건문과 반복문

Math.Random() 메소드

0.0 <= Math.Random() < 1.0
  • 랜덤 메소드는 0.0 ~ 1.0 사이의 double타입의 난수 하나를 리턴한다
  • 0.0은 범위에 포함되고 1.0은 포함되지 않는다

랜덤 메소드로 n까지의 정수 중 A부터 시작하는 임의의 정수 하나를 얻기 위해서는 다음과 같이 사용한다

int num = (int)(Math.Random() * n) + A;

break문이 없는 case

int time = 9;
        
        switch (time){
            case 8: //변수 값이 8일경우
                System.out.println("출근합니다");
            case 9: //변수 값이 9일경우
                System.out.println("회의를 합니다");
            case 10: //변수 값이 10일경우
                System.out.println("업무를 봅니다");
            case 11: //변수 값이 11일경우
                System.out.println("외근을 나갑니다");
            default: //변수 값에 해당하는 case가 없을 경우
                System.out.println("퇴근 합니다");
                
                
> Task :Self_04_1_1.main()
회의를 합니다
업무를 봅니다
외근을 나갑니다
  • time 변수가 9이므로 case 8 은 건너뛴다
  • case 9로 이동한 후 switch문에 break가 없어 다음 case를 차례로 모두 실행한다
  • switch문에는 byte, short, char, int변수만 입력이 가능하다고 한다
    • 더 찾아보니 string변수도 가능하다고 한다

고정 소수점과 부동 소수점

컴퓨터는 소수점이 포함된 실수를 표현하기 위해서
고정 소수점(Fixed Point)와 부동 소수점(Floating Point)를 사용한다

고정 소수점(Fixed Point)

자바의 자료형 중 int는 32개의 비트를 사용해서 정수 데이터를 저장한다
고정 소수점은 그 32bit를 반으로 나눠 정수부분과 소수부분으로 표현한다

[ 0 000000000000000 0000000000000000 ]

  • 왼쪽부터 1bit : 부호를 결정한다( 0이면 양수, 1이면 음수)
  • 그다음 15bit : 정수를 표현한다
  • 마지막 16bit : 소수점 이하를 표현한다

예를 들어 119.8125를 고정 소수점으로 표현하면
[ 0 000000001110111.1101000000000000 ]
정수 119를 이진법으로 표현한다면
1 = 1
10 = 2
100 = 4
1000 = 8 이니
정수 119는 1110111 으로 표현된다
부호비트는 119는 양수이니 0으로 표현되고 나머지는 0으로 채워진다

소수점 0.8125를 이진법으로 표현한다면
0.1 = 0.5
0.01 = 0.25
0.001 = 0.125
0.0001 = 0.0625
1/2n(n>0) 이 된다
즉 0.5+0.25+0.0625를 더한 0.8125가 된다

하지만 고정 소수점은 정수부분과 소수부분의 자릿수가 작아서 표현할 수 있는 범위가 작다

부동 소수점(Floating Point)

119.8125를 부동 소수점으로 나타내기 위해 IEEE 754 표준을 사용한다
IEEE 754는 IEEE에서 개발한 부동소수점을 표현하는 가장 널리 쓰이는 표준이다

[ 0 10000101 1101111 1010000000000000 ]

  • 왼쪽부터 1bit : 부호를 결정한다( 0이면 양수, 1이면 음수)
  • 그다음 8bit : 지수부분을 표현한다(소수점이 지수만큼 이동한다)
  • 마지막 23bit : 소수점 이하를 표현한다

119.8125를 2진법으로 표현하면 1110111.1101(2) 이며
1.1101111101(2) x 26 으로 표현 가능하며 이를 정규화된 부동 소수점이라고 한다

지수는 6인데 32bit의 Bias인 127을 더해서 표기하면 133이 된다.
133를 2진법으로 표기시 10000101(2)가 된다.

가수부는 1.1101111101(2)의 소수부분으로 나머지는 0으로 채워진다

1의 보수, 2의 보수

컴퓨터에서는 데이터의 사칙연산시 뺄셈을 하지 못해 1의 보수나 2의보수를 사용해서 처리하게 된다

1의 보수

2진수로 이루어진 비트를 모두 반전 시키는 기법이다
예를들어 1001 1000에 1의 보수를 적용하면 0110 0111 이 된다
컴퓨터는 최상위 비트인 부호 비트를 보고 이를 음수로 인식하게 된다

2의 보수

1의 보수 과정을 거친 수에 1을 더하는 기법이다
0110 0111 에서 2의 보수를 적용하면 0110 1000이 된다

1001 1000와 2의보수인 0110 1000를 더하면 1 0000 0000이 된다
컴퓨터는 지정한 자릿수를 초과하게 되면 버리게 되어 0000 0000이 된다

컴퓨터는 이를 통해 뺄셈연산의 효과를 내게 된다

후기

break문이 없는 case는 자격증을 공부할때 본거 같아서 다시한번 복기했다

 System.out.println(0.1+0.2 == 0.3);

이 코드가 false라는 것이 문득 생각나서 소수점을 찾아봤는데 처음보면 생각보다 복잡하다..

profile
Kickoff 22-10-19

0개의 댓글