일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 클래스
- 2의보수
- new연산자
- 컴퓨터구조
- 변수의초기화
- 객체지향
- 전역변수
- 1의보수
- 지역변수
- 객체지향언어
- random클래스
- static
- 부호절댓값
- Math.random()
- 2진법음수
- 난수발생
- 멤버메소드
- java
- 멤버변수
- 2진법음수표현
- random()
- 클래스멤버
- 의사난수
- 2진법의음수표현
- 난수
- 멤버필드
- 자바프로그래밍
- 자바
- JAVA프로그래밍
- 멤버변수의초기화
- Today
- Total
목록프로그래밍 기본 지식 (39)
주인장의 프로그래밍 개발 공부방
앞에서 다양한 음수 표현 방법을 알아보면서 2의 보수가 컴퓨터에서 음수를 표현하는데 얼마나 잘 어울리는지에 대해서 이해했으리라 믿는다. 이번 편에서는 앞서 미처 설명하지 못한 부분들에 대해서 언급하고 좀 더 자세히 설명할만한 부분들에 대해서 알아보는 편으로 작성한다. 1. 컴퓨터는 덧셈 밖에 할 줄 모른다. 1편에서도 언급했지만 컴퓨터의 산술 논리 장치(ALU)는 가산기로 구성되어 있고 덧셈만 연산할 수 있는 기계이다. 그렇기 때문에 뺄셈이라는 로직 자체를 구현한 것이 아닌 음수를 표현하는 방식을 채택함으로서 덧셈만으로 뺄셈도 할 수 있게 된 것이다. 이러면 논리회로를 설계함에 있어서도 복잡 다양한 논리회로 구조보단 조금이라도 더 단순한 논리회로 설계가 가능한 것이다. 이것이 수학에서의 보수라는 개념으로..
1편에서는 2진수를 음수로 표현하는 방법 중 부호 절댓값에 대해서 간단하게 알아봤다. 2편에서는 보수라는 개념을 통해서 1의 보수와 2의 보수를 표현하는 방법, 2의 보수로 2진수를 음수로 표현하는 방법이 효과적인 이유를 설명한다. 목표 : 보수의 개념을 이해하고 1의 보수와 2의 보수를 이용해 음수로 변환 후 음수 연산을 할 수 있다. 1. 보수의 개념 1편에서 부호 절댓값에 대해서 알아봤는데 음수로 변환하는 방법은 간단하지만 그에 따른 단점이 있는 것을 알 수 있었다. 결국 우리와 함께 갈 수 없었던 부호 절댓값을 뒤로하고 우리 앞에 등장한 녀석이 바로 보수라는 개념이다. 생소한 단어일 수도 있는데 수학에서 등장하는 용어인데 수학적 의미로는 "보충해주는 수, 합해서 특정 숫자를 채우게 하는데 필요한 ..
최근에 달렸던 댓글에 답변을 하면서 문득 뇌리를 스친 내용이 생겨서 정말 오랜만에 간단한 컴퓨터 구조론 지식을 포스팅해보고자 한다. 이 내용을 공부한 지 오래되어서 예전에 공부했던 정보처리기사에서 정보를 얻고자 검색했는데 2020년 이후로 개정된 정보처리기사는 나에게 있어 너무 생소한 기사 자격증이 되어 버려서 잠시 정신을 잃을 뻔하다가 다시 정신을 차리고 여기저기서 공부를 하고 내 나름대로 작성해보려 한다. 잡설은 그만두고 여기에서 작성되는 내용은 직접적으로 프로그래밍을 언급하는 부분이 아니라 컴퓨터 공학과 관련된 지식을 얻고 간다는 생각으로 가볍게 읽어줬으면 좋겠다. 읽어보고 이해가 잘돼서 나의 지식이 되면 좋은 것이고 모르면 어쩔 수 없는 것이고.... 설명에 있어서 최대한 풀어서 설명하는 경향이 ..
이전의 객체 배열 설명이 길어진 관계로 두 편으로 나누어 작성합니다. 2. 가변 배열 지금까지 여러 배열에 대해서 알아봤는데 우리가 앞서 알아봤던 2차원 이상의 배열에서 조금 더 확장된 개념의 배열이 있다. 바로 가변 배열인데 의미 그대로 가변적인 크기의 배열을 뜻한다. 다시 말해, 각 배열의 요소마다 방크기를 임의대로 정할 수 있다는 뜻이다. 이게 무슨 소린가 싶겠지만 아래의 예시를 보면 쉽게 이해할 수 있을 것이다. 예시2) String[][] strArr = new String[3][]; 위의 예시2는 String[][] 타입의 2차원 배열에서 하나의 인덱스만 지정한 형태이다. 행렬로 비유하자면 행의 수만 지정한 상태인 것이다. 일반적인 2차원 배열의 형태라면 각 행마다 열의 수는 모두 동일하겠지만..
지금까지 배열의 전반적인 내용과 1차원 배열, 2차원 배열 등 다양한 배열에 대해서 알아보았다. 이번 시간에는 똑같은 배열이지만 구조적으로 조금 더 복잡한 심화내용을 다뤄보려고 한다. 목표 : 객체 배열과 가변 배열에 대해서 이해할 수 있다. 1. 객체 배열 우리는 지금까지 소스 코드 등을 자바를 기반으로 공부하고 있었지만 정작 객체지향 프로그래밍에서 객체라는 것을 제대로 공부하지 않았기 때문에 객체가 도당체 무엇인지 알 수가 없을 것이다. 하지만 지금은 객체가 무엇인지 이해하려 하지말고 일단 배열이라는 것에 초점을 맞추길 바란다. 이 다음에 배울 객체에서 제대로 알아볼테니 조급한 마음은 잠시 접어두자. 일단 객체 배열이라는 것은 배열은 배열이지만 배열의 각 방에 담겨있는 것들이 객체라는 것이다. 우리는..
이제 2차원 배열의 구조와 선언 방법에 대해서 알아봤으니 2차원 배열을 실제로 사용하는 방법에 대해서 알아보도록 하자. 여기에서는 다른 방식으로 선언하는 방법과 2차원 배열에 값을 저장하고 출력하는 방법에 대해서 알아보려고 한다. 목표 : 2차원 배열에 값을 저장하고 출력하는 방법을 이해하고 사용할 수 있다. 1. 2차원 배열에 값을 저장 2차원 배열을 선언도 해봤고 구조도 어떻게 되어 있는지 알아봤으니 이제 값을 저장하고 가져오는 방법에 대해서 알아보도록 하자. 먼저 저장하는 방법이다. 예시를 위해 2차원 배열을 만들어보자. 예시1) char[][] charArr = new char[4][2]; 이번에는 char타입의 2차원 배열을 선언해 보았다. 구조는 앞에서 살펴봤던 2차원 배열의 구조와 거의 흡사..
앞서 배열이 무엇인가와 배열의 구조에 대해서 알아봤고 대표적인 배열인 1차원 배열에 대해서 자세하게 알아봤다. 1차원이라는 말이 사용했다는 것은 2차원, 3차원도 있기 때문에 굳이 1차원을 언급했을 것이다. 그래서 이번 시간에는 2차원(이상) 배열에 대해서 알아보려고 한다. 목표 : 2차원(이상) 배열의 구조를 정확하게 이해하고 사용할 수 있다. 1. 다차원 배열 2차원 이상의 배열에 대해서 알아보기 전에 1차원 배열에 대해서 아주 간단하게 잠깐 복기하는 시간을 가져보자. 먼저 1차원 배열은 인덱스를 하나만 가지는 배열이 되겠다 형태는 int[] arr = new int[5]; 와 같이 선언하고 사용할 수 있겠다. 여기에서 왜 1차원이라는 단어를 사용하는지에 대해서는 굳이 자세하게 설명하지는 않을 것이다..
이번 시간에는 지난 번에 잠깐 만났던 1차원 배열에 대해서 알아보자. 1차원 배열이라고 해서 특별한 것이 아니고 우리가 배웠던 배열의 기본적인 형태이기 때문에 구조를 이해하는데에는 큰 어려움이 없을 것이다. 다만 여기에서는 1차원 배열을 만들고 사용하는 방법에 대해서 자세하게 알아보도록 하자. 목표 : 1차원 배열을 생성하고 자유롭게 1차원 배열을 활용할 수 있다. 1. 1차원 배열 선언 방법 우리가 배열을 처음 배울 때 이미 알아봤지만 복습 차원에서 다시 한 번 알아보자. 1차원 배열을 선언하는 방법은 다음과 같다. 예시1) int[] intArray = new int[5]; 자바에서는 배열 타입이라는 것이 존재하고 이를 표기하는 방법은 배열에 들어가는 값들의 타입 뒤에 [ ]를 붙여주면 된다. 위의 ..
지난 시간에는 배열이 왜 등장하게 되었는지와 일반 변수와 배열의 차이점에 대해서 간단하게 알아봤다. 이번 시간에는 배열을 선언하는 방법과 선언했을 때의 구조에 대해서 알아보려고 한다. 목표 : 배열을 선언하는 다양한 방법을 알 수 있고 배열을 선언했을 때 어떤 구조가 되는지 알 수 있다. 1. 배열의 선언방법 먼저 배열을 선언하는 방법에 대해서 알아보자. 참고로 배열을 선언한 변수는 참조 변수이기 때문에 값 자체가 아닌 주소를 저장하고 있다는 점을 기억하길 바란다. 굉장히 중요한 부분이다. 배열을 선언해보기에 앞서 다시 변수를 불러오려고 한다. 계속해서 변수를 끌어들이는 이유는 어찌되었든 변수에서 확장된 것이기 때문에 이해를 돕기 위해서 그러는 것이다. int타입의 변수를 하나 선언해보겠다. int i ..
이제 프로그래밍에 대한 기본 지식의 끝에 다다르고 있다. 이번에 배우는 배열까지 배운다면 자바라는 언어 뿐만 아니라 다른 프로그래밍 언어를 공부하더라도 크게 문제가 없을 것이다. 즉, 지금까지 공부한 내용들이 프로그래밍에 있어서 기반이 되고 어디에서든 사용된다는 점을 잊지 않길 바란다. 이번 시간에는 배열에 대해서 알아보려고 한다. 목표 : 배열이 무엇을 의미하는지 이해하고 어떠한 특징을 가지고 있는지 알 수 있다. 1. 배열이 왜 등장하게 됨? 우리가 맨 처음에 배웠던 변수의 기억을 다시 소환해보자. 뜬금없이 배열을 공부하는데 무슨 변수를 생각하라니 아이러니하겠지만 배열이라는 녀석은 변수와 아주 밀접한 관련이 있는 녀석이 되겠다. 일단 변수에 대해서 다시 상기시켜보자. 변수란 어떠한 하나의 값을 저장하..
이제 반복문의 끝판왕이자 길고 길었던 반복문을 끝낼 때가 왔다. 이번 시간에는 반복문 안에 또 다른 반복문을 사용하는 중첩 반복문에 대해서 알아보려고 한다. 목표 : 중첩 반복문이 어떻게 동작하는지 정확하게 이해하고 중첩 반복문을 사용할 수 있다. 1. 중첩 반복문이란? 중첩 반복문은 우리가 지금까지 공부했던 반복문 안에 새로운 반복문이 들어가 있는 녀석을 말한다. 이전에 조건문을 공부할 적에도 중첩 조건문이라는 것도 있었던 것처럼 반복문도 중첩이 가능하다. 그리고 그 중첩의 횟수도 제한이 없다. (하지만 조건문과는 다르게 반복문에는 특이한 개념이 따라오기 때문에 중첩 횟수가 굉장히 중요하다. 그 부분은 나중에 다시 알아볼 기회가 있으니 이번 시간에는 중첩 횟수에 제한이 없다만 알고 있자.) 그리고 어떠..
반복문의 마지막 단계에 접어들었다. 이번에 알아볼 내용은 do-while문이다. do-while문은 while문과 거의 흡사한 녀석이지만 약간의 차이가 있다. 목표 : do-while문의 구조를 이해하고 활용할 수 있다. 1. do-while문? do-while문은 while문에서 파생된 반복문이라고 할 수 있다. 이 녀석이 등장한 계기는 바로 반복문이 해당 조건에 만족할 때만 실행되는 것을 어떠한 상황이라도 무조건 반복문을 한 번은 실행시키기 위해서 등장했다. 어떤 경우에 그렇게 사용하는지는 아직 자세히 이해하진 못하겠지만 일단 do-while문이 이런 동작을 하는 것이라는 것은 알고 있길 바란다. do-while문 역시 조건식이 필요하고 반복문과 동일하게 구현부가 존재한다. 그러나 우리가 알고 있는 ..
이번에는 반복문의 2인자인 while문에 대해서 알아보도록 하자. 보통 while문은 무한루프를 구현하는데 많이 사용되는데 어떤 경우인지 제대로 살펴보도록 하자. 목표 : while문의 구조를 정확하게 이해하고 사용하는 방법을 제대로 이해해 직접 사용할 수 있다. 1. while문? 우리는 이전에 반복문에서 가장 대표적인 녀석인 for문에 대해서 알아봤다. 반복문에는 for문 뿐만 아니라 while문, do-while문이 있다고 했는데 여기에서 while문은 같은 반복문이지만 사용하는 형태와 경우가 for문과는 많이 다르다. 3개의 식을 지정해야 하는 for문과는 다르게 while문은 조건식 또는 조건식의 결과만 가지고 동작한다. 그렇기 때문에 for문보다 쉬워 보일 수 있지만 꼭 그렇지만도 않다. 다른..
우리가 앞서 조건문에 대해서 자세히 알아봤는데 이번에 알아볼 내용은 바로 중첩으로 조건문을 사용하는 것이다. 목표 : 중첩으로 조건문을 사용할 수 있다. 1. 중첩 조건문으로 사용 이미 이전에 만난 적이 있었다. if문을 알아볼 적에 if문의 응용_2라고 하는 부분이었는데 if문 안에 또 다른 if문을 넣어서 작성하는 것이었다. 그 때의 예시를 다시 들고와서 알아보자. 예시1) Scanner sc = new Scanner(System.in); int score = 0; score = sc.nextInt(); if (score >= 90 && score = 97) { System.out.println("A+입니다."); } else if (score
반복문의 대표주자인 for문에 대해서 알아보도록 하자. 이제는 조금은 머리를 써야하는 내용이 찾아왔다. for문까지 배운다면 어느정도는 있어보이는 프로그램을 만들 수 있을 것이라고 생각한다. 목표 : for문의 정의와 구조에 대해서 정확하게 이해할 수 있다. 1. for문이란? 반복문에는 3가지가 존재한다고 했었다. 그 중에서 가장 많이 사용하는 것이 바로 for문이라고 했는데 for문은 어떤 녀석인지에 대해서 자세하게 알아보도록 하자. 앞서 우리가 잠시 알아봤지만 for문은 반복문의 종류 중 하나이다. 반복문이라면 같은 동작을 반복하는 명령어를 뜻하는데 for문은 그 중에서도 반복문의 대표라고 할 수 있다. for문은 조금은 특이한 구조를 가지고 있는데 조건이 3개씩이나 필요하다. 그렇기 때문에 정확하..