경제 이야기에서 가장 많이 등장하지만 정확히 금리가 무엇인지 잘 모르는 분들이 많이 있죠.

요즘 트럼프 대통령이 금리인하에 대한 압박을 하면서 경제흐름이 많이 바뀌고 있는데요.

과연 금리가 무엇이길래 미국의 대통령이 강조하는 것인지 알아보겠습니다. 


금리란 무엇인가에 대한 질문으로 쉽게 대답하면 이자라고 할 수 있습니다.

한국 은행에서 기준금리를 결정하면 그 방향성에 맞게 시중 은행은 이자를 결정합니다.

예금이자나 대출이자 같은 것들 말이죠.

 

정확히 말하면 원금에 대한 이자 비율을 금리라고 합니다.

 

금리가 올라가면 이자에 대한 부담이 커지게 되고 그만큼 대출 받으려고 하는 사람들이 줄어들겠죠.

반대로 금리가 내려가면 이자에 대한 부담이 작아지기 때문에 대출 받아서

부동산이나 주식에 투자하려는 사람들이 많아지게 됩니다. 

 

이렇게 금리란 아주 단순하면서 복잡한 경제를 움직이는 기본적인 원리입니다. 

 

따라서 부동산이나 주식 투자에 관심이 많으신 분들은 금리에 관심이 많겠죠.

요즘 트럼프 대통령이 연준에게 금리인하에 대한 압박을 가하고 있습니다.

과연 어떤 생각인지 잘 모르겠지만....

 

세계의 기축통화인 달러의 기준금리가 낮아진다는 것은 시장에 유동성이 많이 풀린다는 이야기이기 떄문에

이 방향에 맞게 투자를 준비하는 똑똑한 투자자가 되어야겠습니다.

 

아... 여기서 유동성 이라는 말은 시장에 공급되는 자금을 말합니다.

금리가 낮아지면 투자자들은 낮은 이자를 내면서 돈을 대출 받을 수 있죠.

대출 받은 돈은 시장으로 들어가 많은 자산들의 가치를 상승시키는 역할을 합니다.

 

앞으로 우리나라도 많은 유동성이 풀릴 것으로 기대되고 있고, 트럼프의 발언 이후

한국의 기준금리 인하를 요구하는 목소리가 들려오면서

이미 시중은행들에서는 예금금리를 낮추는 움직임을 보이고 있습니다.

 

금리가 오를땐 눈치보면서 올리면서 ㅋㅋ.... 

이럴때 정말 누가 먼저라고 할 것 없이 ... ㅋㅋ...

기름값과 비슷하네요.

 

만약에 금리가 오르게 된다면 어떻게 될까요?

금리가 오른다는 것은 쉽게 생각하면 은행에서 이자를 많이 주는 것이고

많은 사람들이 은행에 돈을 맡겨서 이자를 받으려고 하겠죠.

 

이 밖에 다양한 금리들이 있습니다. 명목금리, 실질금리, 기준금리와 같은 것들이 있는데요.

 

명목금리(Nominal Interest Rate)는 물가상승률을 감안하지 않은 금리로

쉽게 생각하면 은행에서 정하는 금리라고 보시면 됩니다.

여기서 물가상승률에 대한 이야기가 나온 이유는 물가가 오른 것보다 금리가 낮으면

사실상 은행에 돈을 맡겨서 이자를 받았지만, 돈이 없어진 셈이죠.

 더 쉽게 설명하면 제가 1년전에는 1000원으로 김밥을 사먹을 수 있었다고 가정하겠습니다.

하지만 1년전에 김밥을 안먹고 은행에 넣었습니다. 그리고 이자를 200원 받았죠.

그래서 1년뒤에 이자가 1200원이 되었습니다. 

하지만 김밥의 가격은 1500원이 되었죠... 그렇다면 1년 후에 저는 김밥을 먹기 위해서

300원을 더 지불해야하는 것이죠. 

 

이렇듯 명목금리가 마이너스가 되면 은행에 돈을 맡기는 것이 손해가 되고,

따라서 자산에 투자하는 것이 훨씬 이득이라는 판단이 됩니다. 

하지만 이는 자산가격의 거품을 형성하는데도 영향을 줍니다.

 

실질금리는 (Real Interest Rate)은 명목금리에서 물가상승률을 빼고 계산한 금리입니다.

따라서 실제 우리가 느끼는 금리라고 할 수 있죠.

 

기준금리는 한 국가의 금리로 한국은 기준금리는 한국은행이 정하죠.

그리고 기준금리에 따라 시중은행이 금리를 결정하게 됩니다.


과거 한국 경제가 급성장하던 시절 금리가 10프로가 넘었다고 하던데..

요즘 20대들이 생각했을때 말도 안되는 금리죠.

 

과거는 과거고 우리는 현재를 살아가고 있기 때문에 현재 상황에 맞게 포지션을 잡아야겠죠.

그 누구도 우리를 부자로 만들어주지 않습니다.

 

부자가 되기 위해서는 스스로 경제에 대한 이해를 바탕으로 시대에 맞는 흐름을 파악해서

그 흐름에 편승해서 부자가 될 수 있도록 열심히 공부해야겠죠.

 

 

프로그래밍을 하다보면 예상하지 못한 문제를 만나게 됩니다. 이런 문제를 적절하게 해결하지 않는다면 프로그램이 중간에 멈추거나 작동하지 않는 결과가 생기죠. 


이런 문제를 해결하기 위한 도구로 예외처리라는 것이 있습니다. C#에서는 다양한 exception을 제공하고 있습니다.

흔히 사용될 수 있는 파일을 읽을때 발생하는 예외, 인덱스를 벗어나는 경우 발생하는 예외, 다른 서버에 접속할때 발생하는 예외 등 수많은 예외를 C#에서 미리 만들어 놓고 사용할 수 있게 해줍니다.

예외처리를 사용하기 위해서는 try catch라는 문법을 사용하고 finally를 사용해서 예외처리와 상관없이 진행되는 코드를 넣을 수 있어요.

try
{
    예외가 발생할 수 있는 코드
}
catch (execption e)
{
   예외가 발생했을때 대처할 코드
}
finally
{
   예외처리와 상관없이 try구문을 벗어날때 실행되는 코드
}

이렇게 코드가 구성되어 있습니다.
exception을 빼고 c#에서 제공하는 다양한 exception을 써도 상관없습니다.
또 여러가지 catch문을 써서 다양한 예외처리를 한번에 할 수 있어요.
그리고 throw라는 키워드를 사용해서 자신이 원하는 exception 도 만들 수 있어요.

try
{}
catch(execption e)
{
   throw new Execption("  여기서 에러 ");
}





열거형 두번째 이야기로 비트플래그에 대해서 이야기하겠습니다. 비트플래그를 이해하기 위해서는 비트에 대한 개념이 있어야 합니다.


비트플래그에서는 비트를 구성하는 0과 1을 참 거짓으로 표현하여 현재 상태를 나타내는 것입니다.

우선 0은 거짓을 표현하고 1은 참을 표현해요.

예를 들어 과일을 표현하는 enum이 있다고 하겠습니다.

public enum Fruit
{
    None = 0,
    Apple = 1,
    Banana = 2,
    Peach = 4
}

비트플래그를 위해서 항상 None이라는 것이 필요하고 0으로 설정합니다. 그리고 다음 enum부터 1, 2, 4, 8, 16이런식으로 표현합니다.

여기서 0, 1, 2, 4, 8, 16이란 숫자에 주목해야하는데요.

이 숫자를 이진수로 표현해보겠습니다.

(10)                (2)
0          00000000000
1          00000000001
2          00000000010
4          00000000100
8          00000001000
16        00000010000

이제 이 숫자들이 어떤 특징이 있는지 보이시나요?
바로 이진수의 자리마다 한개의 1을 사용하고 있습니다.
잘 이해가 안가시죠? 이제 enum과 위에 숫자들을 연관시켜보겠습니다.

Peach    Banana    Apple
   0               0              0           
   0               0              1           
   0               1              0           
   1               0              0           

이진수 000 의 경우 십진수로 0이고 어떤 과일도 선택안된 상태인 None 입니다.

이진수 001 의 경우 십진수로 1이고 사과가 선택된 상태입니다.

이진수 010 의 경우 십진수로 2이고 바나나가 선택된 상태입니다.

이진수 100 의 경우 십진수로 4이고 복숭아가 선택된 상태입니다.

각 자리수에 0이면 선택되지 않은거고 1이면 선택된 상태가 됩니다.

따라서 110은 복숭아와 바나나가 선택된 상태가 됩니다.

코드로 보면

Fruit.Banana | Fruit.Peach 라서 쓰면
010 | 100 이라는 비트연산이 되고
연산결과는 110이됩니다. 해석하면 바나나 또는 복숭아라는 뜻이 되기에 선택한 enum에 복숭아와 바나나가 모두 선택된 뜻처럼 사용되는거죠.
참고로 enum 에서 All 을 표현하기 위해서는 
~0 이라는 키워드를 사용하면 됩니다. 


public enum Fruit
{
    None = 0,
    Apple = 1,
    Banana = 2,
    Peach = 4,
    All = ~0,
}



C#을 공부하다보면 조건문을 만나게 됩니다.
이때 논리연산을 많이 사용하는데요. 우선 기본 개념부터 이야기하면

1. && 논리연산
AND 연산은 모든 조건이 true 인 경우 해당 연산이 true가 되는 연산입니다.

ex)
true && true = true
true && true && false = true
false && false = false

2. || 논리연산
OR 연산은 한 조건이라도 true이면 true를 반환하는 조건입니다.

ex)
true || false = true
false || false = false
true || true = true

이게 기본 개념인데요. 이런 논리연산을 조건문에 대입하는 경우 각 조건문의 위치가 중요합니다.

예를 들어 학생들의 점수가 기록된 DB에서 원하는 정보를 조건문으로 가져온다고 생각해볼께요.

학생중 성이 김씨이고 서울에 거주하면서 점수가 70점 이상인 학생들 조건문으로 찾는다고 가정할때

조건문의 순서를 김씨를 먼저 찾고 그리고(&&) 서울에 거주하고 그리고(&&) 점수가 70점이상인 경우라고 하면 코드를 읽을때 쉽게 이해할 수 있어요. 그리고 이 경우 각 조건을 확인하고 하나의 조건이라도 만족하지 않을 경우 다음 조건은 검사하지 않아요.

그래서 검사하는데 필요한 비용이 작은 순서로 검사하는 것이 좋아요.

OR 논리연산의 경우 한가지 조건이라도 만족할 경우 다음 조건을 검사하지 않기 때문에 이 경우도 필요한 비용이 작은 순서로 검사하는 것이 좋겠죠?


4가지 비트연산에 대해서 간단하게 알아보겠습니다. 우선 비트란 0과 1로 이루어진 단위입니다. 그럼 비트 연산이라고 하면 0과 1로 연산을 한다는 것이죠.
비트 연산의 종류로는 AND, OR, XOR, NOT 이 있는데요. 가장 많이 사용하는 4가지에 대해서 하나씩 알아보겠습니다.

1. AND (&)
AND 연산은 0이 하나라도 있으면 0이 반환됩니다.
ex)
1 & 1 = 1
1 & 1 & 1 = 1
1 & 0 = 0
0 & 1 = 0
0 & 0 = 0


2. OR (|)
OR 연산은 AND 연산과 반대되는 연산으로 1이 하나라도 있으면 1을 반환합니다.
ex)
0 | 0 = 0
0 | 1 = 1
1 | 0 | 0 = 1
1 | 1 | 1 = 1


3. XOR (^)
XOR 연산은 연산을 하는 두개의 비트가 서로 다른 경우에 1을 반환합니다.
ex) 
1 ^ 1 = 0
0 ^ 0 = 0
1 ^ 0 = 1
0 ^ 1 = 1


4. NOT (~)
NOT 연산은 1을 0으로, 0을 1로 변환합니다. 
ex) 
~1 = 0
~0 = 1 


대부분의 프로그래밍 언어에서는 enum이라는 것을 지원합니다.
enum은 프로그래머가 원하는 상수를 만들 수 있는데요. 프로그래밍에서 enum을 사용하는 것은 매우 중요합니다. 잘 사용하면 정말 효율적이죠.
우선 enum을 만드는 방법부터 알아보겠습니다.

public enum Grade
{
    A,
    B,
    C,
    D,
    F
}

이런식으로 접근제한자 다음에 enum이라는 키워드를 적고 해당 enum의 이름을 적어주면 됩니다. 그리고 안에 해당 enum들의 원소를 적어줍니다.

enum을 사용하는 프로그래머가 볼때는 글자이지만, 내부적으로 숫자로 인식됩니다. 선언된 순서대로 0, 1, 2, 3, 4라는 숫자가 지정됩니다. 이건 기본값이고 원하면 숫자를 지정하는 것도 가능합니다.

public enum Grade
{
    A = 5,
    B = 4,
    C = 3,
    D = 2,
    F = 0
}

이렇게 다른 숫자를 지정해서 사용할 수 있습니다. 저는 개인적으로 이런식으로 숫자 지정하는 것은 피해라라고 하고 싶어요.
각 열거형에 특정한 값을 지정하고 싶다면 attribute를 이용하는 것이 효과적입니다. 열거형의 숫자는 내부적으로 컴퓨터가 사용하는 것이기 때문에 기본값을 사용하는 것이 좋아요.

하지만 기본값을 사용하지 않는 경우가 있는데요. 비트플래그를 사용하는 경우입니다.
비트플래그에 대해서는 다른 글에서 다루겠습니다.

마지막으로 enum을 사용하는 방법을 알아보겠습니다.

public class Student
{
   public Grade mathGrade = Grade.A;
   .....
}

이런식으로 사용할 enum인 Grade를 적고 . 을 이용해서 원소를 적어줍니다. 열거형의 경우 등호나 부등호를 이용하서 비교하는 것이 가능하고 조건문이나 switch문에서도 활용할 수 있습니다. 열거형을 많이 사용하면 코드가 읽기 쉽고 깔끔해지는 장점이 있습니다.

개인적으로 enum을 많이 쓰는 것을 권장하고 있어요.


+ Recent posts