import java.util.*; // 머.. 구체적인 거시기가 잇겟지
Scanner scanner = new Scanner(System.in); // Scanner 객체를 호출했다
String input = scanner.nextLine(); // Scanner 객체 내부의 nextLine 메소드를 불러왔다
int num = Integer.parseInt(input); // input값을 받아온 뒤 int형으로 변환
nextInt(), nextFloat() 등 바로 변환해주는 메서드가 있지만, 연속적으로 값을 받는데 까다롭대.. 걍 일단은 nextLine()으로 String형으로 입력받은 뒤 적절히 변환시켜주자.
ㅈ댓다 진법이옴 ㄷㄷㄷ.. 수능도 외워서 푸렁ㅆ던 저에게 어째서 이런 시련이
컴터는 0, 1밖에 모른다. 그러므로 컴터에게 적절한 2진법을 인간이 배워보자
10진수의 자리올림과 유사하게 이해했다
10진수는 1 + 9 = 10
9에서 1을 더했을 때 10진수인 10이 완성되고, 자리올림이 발생한다.
2진수는 1 + 1 = 10
머선소리야? 싶겠지만 진짜 10진수의 10이 아니라 2진수 10이다.
위와 동일한 방식으로 1에 1을 더했을 때 2진수인 2가 완성이 되고, 자리올림이 발생했다는걸 표기한거다.
2진수 계산
0 + 0 = 0
0 + 1 = 1
1 + 1 = 10
0 x 0 = 0
0 x 1 = 0
1 x 1 = 1
비트(bit)
한 자리의 2진수, 1비트는 컴퓨터가 값을 저장할 수 있는 최소단위
바이트(byte)
8비트, 1비트가 넘 작아서 1비트 8개를 묶어서 바이트를 만들고, 데이터 기본단위로 사용한다.
+) 워드(word)
보통 4바이트 정도로 묶어서 그림에 표기하는듯? CPU가 한 번에 처리할 수 있는 데이터의 크기. 하지만 워드는 CPU 성능에 따라 다르다. 32비트 CPU에서 워드는 32비트고, 64비트 CPU에서의 워드는 64비트다.
이전 게시물에서 썼듯 n비트로 2^n개의 값을 표현할 수 있다.
n비트로 표현할 수 있는 10진수
값의 개수: 2^n
값의 범위: 0 ~ 2^n - 1
ㅈ댓다 진법이 또옴..
인간이 컴터한테 맞춰서 배워본 2진법은 0, 1로만 값을 표현하는데, 단점은 자리수가 너무 길다.. 0, 1로만 찍으려니까 글적 그래서 나온게 8진법, 16진법이다.
8진수는 2진수 3자리
16진수는 2진수 4자리
를 각각 한 자리로 표현할 수 있다!
2진수를 뒤에서부터 각각 3자리, 4자리씩 끊어서 해당하는 8진수, 16진수로 변환하면 된다.
말은 쉽다
위에 쓴 표를 힐끔힐끔 보면서 변환해보자
좀 기운거같은데 기분탓이다
1010101100이라는 엄청 긴 2진수를 8진수, 16진수로 변환하면 짧게 나타낼 수 있다 굿
산수 시간이다. 해당 진수로 나누고 나머지 값을 옆에 적고 아래에서 위로 적으면 된다. 하하
반대로 하면 된다
각 자리수에 해당 단위 값을 곱해서 다 더하면 된다. 슬 귀찮다..
울고싶다.. 아니다 거짓말이다
10진 소수점수를 2진 소수점수로 변환해보자.
10진 소수에 2를 곱한다
0.625 * 2 = 1.25
소수부만 갖다 다시 2를 곱한다
0.25 * 2 = 0.5
소수부가 0이 될 때까지 1, 2를 반복한다
0.5 * 2 = 1.0
정수부만 위에서 아래로 순서대로 적고, 0.을 앞에 붙인다.
위의 예시에선
정수부만 보면 101(2)고 0.을 붙여서
0.101(2)라는 결과를 얻었다
0.625(10)은 0.101(2)로 변환을 성공했다~! 그만하자 좀 흑흑
2진 소수점수를 10진 소수점수로 변환해보자
위에 내가 했던 식이 구10이 아니라는걸 보여보자. 앞서 말했듯 각 자릿수에 값을 곱하면 된다
10진수 0.625 다음과 같이 표현할 수 있다.
0.625 = 6 * 10^(-1) + 2 * 10^(-2) + 5 * 10^(-3)
2진수 0.101은 다음과 같이 표현할 수 있다.
0.101 = 1 * 2^(-1) + 0 * 2^(-2) + 1 * 2^(-3)
= 1 * 0.5 + 0 * 0.25 + 1 * 0.125
= 0.625(10)
데박~ 진자엿음 ㅋㅋ..ㅋ 그만해 진짜
미안하다.. 대충 설명하자면
2가 왜이렇게 많아?
2가 왜이렇게 많아?
가 아니라.. 2의 보수는 1의 보수 + 1이다.
뭔.. 뭔솔?
쉽게 말하면 1의 보수는 0은 1로, 1은 0으로 바꿔준 것이다 거기다 끝에 1만 더해주면 됨 ㅎㅎ
왜냐면.. 왜냐면.. 자바의 정석 54p를 보세요..