[JAVA] NaN과 Infinity
·
📆 Today I Learned(개발언어학습)/JAVA
NaN 과 Infinity 발생 경우 나눗셈 또는 나머지 연산 시 좌측 피연산자가 정수이고 우측 피연산자가 0일 경우 예외(ArithmeticException)가 발생한다. 무한대의 값을 정수로 표현할 수 없기 때문이다. (ex int result = 5 / 0) 좌측 피연산자가 실수 이거나 우측 피연산자가 0.0또는 0,0f이면 예외가 발생하지 않고 연산의 결과는 Infinity 또는 NaN(Not a Number)이 된다. 이 경우 어떤 연산을 하더라도 결과는 계속 같은 것이기때문에 데이터가 엉망이 될 수있으므로 계속해서 연산을 수행해서는 안된다. (ex Infinity + 2 → Infinity, NaN + 2 → NaN) 미리 방지하는 방법 Double.isInfinite() 와 Double.in..
[CS : 컴퓨터 구조] 명령어 사이클과 인터럽트
·
Computer Science/컴퓨터 구조
T1) 명령어 사이클 프로그램 속 명령어들은 일정한 주기가 반복되며 실행되는데 이 주기를 명령어 사이클이라고 한다. 인출 사이클 : 실행할 내용을 가장 먼저 CPU로 갖고와야한다 실행 사이클 : 갖고 온 내용을 바탕으로 실행한다. 간접 사이클 : 간접 주소 지정 방식 같이 메모리 접근이 더 필요한 경우 발생하는 사이클이다. ※ 어떤 명령어는 인출과 실행 사이클 만으로 실행되고, 어떤 명령어는 인출, 간접, 실행 사이클을 거쳐 실행된다. T2 ) 인터럽트 인터럽트(interrupt) ; 방해하다, 중단시키다. CPU가 정해진 흐름대로 프로그램을 처리하고 있는 과정 중 흐름을 끊어버리는 것이 인터럽트이다. CPU가 꼭 주목해야할 때 혹은 CPU가 얼른 처리해야할 다른 작업이 생겼을 때 발생한다. T2_sub..
[JAVA] 문자열 반복 ( String.repeat()활용 )
·
📆 Today I Learned(개발언어학습)/JAVA
문자열을 반복해서 출력하기 for문 활용 class Solution { public String solution(String my_string, int k) { String answer = ""; for(int i=0; i
[JAVA] 문자 리스트를 문자열로 변환하기
·
📆 Today I Learned(개발언어학습)/JAVA
문자열 배열을 편하게 이어붙이기위해서 사용할 수 있는것은 경우에 따라 다르다. foreach문 활용(java1.5 부터 사용가능) class Solution { public String solution(String[] arr) { String answer = ""; for(String word : arr){ answer += word; } return answer; } } String.join() 메소드 활용(java8 부터 사용가능) class Solution { public String solution(String[] arr) { return String.join("", arr); } } String.join()은 여러 개의 String을 이어붙여서 하나의 String으로 만들어주는 메소드이다. 활용..
[CS : 컴퓨터 구조] CPU의 작동 원리 : 레지스터
·
Computer Science/컴퓨터 구조
T1 ) 레지스터란? CPU 내부의 작은 임시 저장 장치이다. 프로그램 속 명령어와 데이터는 실행 전·후로 레지스터에 저장된다. CPU 내부에는 다양한 레지스터들이 있고, 각기 다른 역할을 가진다. T2) 레지스터의 종류 ( CPU마다 종류가 다름 ) 프로그램 카운터(Instruction Pointerl; 명령어 포인터) 메모리에서 가져올 명령어의 주소( 메모리에서 읽어들일 명령어의 주소 ) 명령어 레지스터 해석할 명령어( 방금 메모리에서 읽어들인 명령어 ) → 제어장치가 해석함 메모리 주소 레지스터 메모리의 주소( CPU가 읽어들이고자 하는 주소를 주소 버스로 보낼 때 거치는 레지스터 ) 메모리 버퍼 레지스터 메모리와 주고 받을 값( 데이터와 명령어 ) → CPU가 데이터 버스로 정보를 주고 받을 때 ..
[CS : 컴퓨터 구조] CPU의 작동 원리 : ALU와 제어장치
·
Computer Science/컴퓨터 구조
T1) ALU T1_Sub1) ALU는 무엇을 받아들이는가? 계산을 수행하는 장치이기 때문에 계산을 하기 위한 피연산자와 수행할 연산이 필요하다. 레지스터로부터 피연산자를 받아들이고, 제어장치로부터 제어 신호를 받아들인다. 연산 수행 후 결과값을 레지스터에 담는다. (메모리 접근 속도보다는 레지스터 접근속도가 빠르기때문) 결과값( 주소, 숫자, 문자 등등 다양하다. )은 ALU가 내보내는 정보 중 하나이다. 플래그 : 연산 결과에 대한 부가 정보(음수, 양수, 0인지 아닌지 등등) 연산 결과가( 결과를 담을 레지스터에 비해 ) 너무 크다 ! 라는 정보도 담긴다.(overflow) T2) 제어장치 T2_Sub1) 제어장치가 받아들이는 정보 1) 클럭 클럭이란 컴퓨터의 모든 부품을 일사불란하게 움직일 수 있..
[JAVA] 문자열 자르기(substring() 활용)
·
📆 Today I Learned(개발언어학습)/JAVA
substring() substring()은 시작지점과 종료지점을 지정하여 문자열의 특정부분을 잘라내거나 이어붙이는것으로 활용할 수 있다. 활용형태 substring( int startIndex ) : 지정한 index부터 문자열 끝까지 잘라서 반환한다. substring( int startIndex , int endIndex ) : 지정한 시작index부터 종료index까지 잘라서 반환한다. 활용예시 class Solution { public String solution(String my_string, String overwrite_string, int s) { String answer = ""; String a = my_string.substring(0,s); String b = my_string.s..
[JAVA] 문자열을 하나씩 나누기(toCharArray(), charAt() 활용)
·
📆 Today I Learned(개발언어학습)/JAVA
방법 1) toCharArray() 활용 import java.util.Scanner; public class Solution { public static void main(String[] args) { Scanner sc = new Scanner(System.in); String a = sc.next(); for (char ch : a.toCharArray()) System.out.println(ch); } } toCharArray()는 char타입의 배열을 생성하여 문자열을 한글자씩 나누어서 생성된 char타입 배일에 집어넣어 반환해주는 메소드이다. 배열을 생성한 후에 처리되기 때문에 처리속도가 느리다. (물론 사용자가 체감할 정도는 아닌듯..?) 공백또한 문자로 인식을 하기때문에 사용 시 그점은 주..