2025/06/17 8

레지스터

혼자공부하는 컴퓨터구조 + 운영체제제책으로 공부한 내용을 정리한 글입니다.레지스터와 명령어 처리 흐름🔸 레지스터란?레지스터(Register)는 CPU 내부에 있는 아주 빠른 임시 저장소입니다.CPU는 메모리보다 훨씬 빠르게 데이터를 처리해야 하므로, 연산에 필요한 데이터나 주소 등을 레지스터에 임시로 저장합니다.🔸 프로그램 실행과 레지스터의 관계"프로그램의 명령어와 데이터는 실행 전후로 반드시 레지스터를 거칩니다."이 말은 무슨 뜻일까요?메모리에서 직접 연산을 하지 않고,먼저 레지스터로 가져와서 연산하고, 다시 필요하면 메모리에 저장합니다.즉, CPU가 연산하는 모든 값은 레지스터에 잠깐 들렀다 갑니다.그래서 레지스터만 잘 관찰해도 프로그램이 어떻게 실행되고 있는지 알 수 있습니다.🔸 CPU에서 공..

컴퓨터 구조 2025.06.17

임의의 정수 만들기

자바의 정석[기초편]으로 공부한 내용을 정리한 글입니다. Math.random()이란?Math.random();이 메서드는 항상 0.0 이상 1.0 미만의 double 실수값을 무작위로 하나 반환합니다.즉:0.0 예:0.123450.99990.0001 등등 원하는 정수 범위로 바꾸기예를 들어 1 이상 3 이하의 정수(1, 2, 3) 중에서 하나를 얻고 싶다고 가정해봅시다.이걸 위해 아래와 같은 세 단계를 거칩니다.[1단계] Math.random()에 원하는 범위를 곱하기우선, Math.random()에 정수 개수만큼 곱합니다.1부터 3까지 정수는 총 3개(1, 2, 3)이므로, 3을 곱합니다:Math.random() * 3;그럼 결과는:0.0 즉, 0.0 ~ 2.99999... 사이의 실수 값이 됩니다...

Java 2025.06.17

ALU와 제어장치

혼자공부하는 컴퓨터구조 + 운영체제제책으로 공부한 내용을 정리한 글입니다.ALU란 무엇인가요?ALU(Arithmetic Logic Unit)는 CPU 안에서 계산(연산)을 실제로 담당하는 부품입니다.🔹 ALU가 하는 일:산술 연산: 덧셈, 뺄셈, 곱셈, 나눗셈논리 연산: AND, OR, NOT 같은 논리 계산🔹 ALU가 작동하려면 필요한 것:피연산자 (계산할 숫자들) → 레지스터에 들어 있음무슨 계산을 할지 알려주는 신호 → 제어장치가 보냄 ALU 계산 결과는 어디로 가나요?계산 결과는 바로 메모리로 가지 않습니다!이유는: 레지스터가 훨씬 빠르기 때문입니다.➤ CPU는 메모리 접근보다 레지스터 접근이 수십~수백 배 빠릅니다.그래서:ALU는 계산 결과를 일단 레지스터에 저장합니다.필요하면 나중에 메모리..

컴퓨터 구조 2025.06.17

문자열의 비교

자바의 정석[기초편]으로 공부한 내용을 정리한 글입니다. 문자열 비교: 왜 == 말고 equals()를 써야 하나요?String str1 = new String("abc");String str2 = new String("abc");System.out.println(str1 == str2); // falseSystem.out.println(str1.equals(str2)); // true ==은 무엇을 비교하나요?==는 값이 같은가?를 비교하는 것처럼 보이지만, 실제로는 "주소"를 비교합니다.str1 == str2는 "str1과 str2가 같은 객체인가?"를 묻는 것입니다.지금처럼 new String("abc")로 만들면 서로 다른 객체가 생성됩니다.내용은 같아도 객체는 다르기 때문에 ..

Java 2025.06.17

타입 간의 변환방법

자바의 정석[기초편]으로 공부한 내용을 정리한 글입니다. 숫자를 문자로 변환(char)(3 + '0') = '3''0'은 문자이지만, 숫자 48입니다 (유니코드 기준).여기에 숫자 3을 더하면 → 48 + 3 = 5151은 문자 '3'의 유니코드 값이기 때문에(char)51은 '3'이 됩니다! 문자를 숫자로 변환'3' - '0' = 3'3'은 유니코드로 51, '0'은 4851 - 48 = 3 → 숫자 3이 나옵니다.즉, 문자를 정수로 바꾸고 싶으면 '0'을 빼면 됩니다! 숫자를 문자열로 변환3 + "" = "3"숫자 + 문자열 → 문자열 연결 연산이 일어납니다.숫자 3을 문자열로 바꿔서 "3"이라는 문자열이 됩니다. 문자열을 숫자로 변환Integer.parseInt("3") = 3Double.parse..

Java 2025.06.17

화면으로부터 입력받기

자바의 정석[기초편]으로 공부한 내용을 정리한 글입니다. import java.util.Scanner;이 문장은 Scanner라는 도구(클래스)를 사용하기 위해 미리 가져오는(import) 코드입니다.Scanner는 자바에서 사용자로부터 입력을 받을 때 사용하는 도구입니다.java.util은 Scanner가 들어 있는 자바의 기본 도구 상자(package) 중 하나입니다.📌 Scanner 없이 키보드 입력을 받을 수는 없습니다. 그래서 꼭 import해야 합니다. Scanner scanner = new Scanner(System.in);Scanner클래스 이름 (입력받는 도구)scanner우리가 만든 Scanner 도구의 이름 (변수 이름)new Scanner(...)Scanner 도구를 실제로 만드..

Java 2025.06.17

기본형과 참조형

자바의 정석[기초편]으로 공부한 내용을 정리한 글입니다. 자료형이란 무엇인가요?자료형(데이터 타입)이란,"변수가 어떤 종류의 값을 저장할 수 있는지 정해주는 규칙"입니다.예를 들어,int → 정수double → 실수boolean → true/false처럼 변수마다 저장할 수 있는 값의 형태와 범위를 자료형이 결정합니다. 자료형의 두 가지 분류: 기본형 vs 참조형자바(Java)에서 자료형은 크게 두 가지로 나뉩니다.기본형 (Primitive Type)값 자체를 저장함int, float, char, boolean 등참조형 (Reference Type)객체의 주소를 저장함String, 배열, 사용자 정의 클래스 등 기본형 (Primitive Type)기본형은 말 그대로 "가장 기본이 되는 값"을 저장하는 자..

Java 2025.06.17

상수와 리터럴

자바의 정석[기초편]으로 공부한 내용을 정리한 글입니다. 변수란?변수는 프로그램에서 값을 저장해두는 공간입니다.쉽게 말하면, 값을 담을 수 있는 상자입니다.int year = 2014;여기서 year가 변수입니다.2014는 그 안에 들어간 값입니다.즉, 변수는 이름을 가진 공간이고, 그 안에는 값을 바꿔가며 넣을 수 있습니다.변수는 “변할 수 있는 값을 담는 상자”입니다. 상수란?상수는 변수처럼 값을 저장하지만, 한 번만 저장할 수 있는 공간입니다.값을 한 번 저장하면 절대 바꿀 수 없습니다.선언 방법final int MAX_VALUE = 100;final이 붙었기 때문에, 이건 상수입니다.MAX_VALUE는 상수 이름100은 저장된 값만약 아래와 같이 바꾸려고 하면?MAX_VALUE = 200; //..

Java 2025.06.17