본문으로 바로가기

C# 수업#3

category C# 2020. 5. 23. 15:15

안녕하세요~~~! 문쑹입니다.

 

오늘은 진법의 개념에 대해서 설명을 하겠습니다.

진법이란 수를 표기하는 기수법의 하나로 임의의 숫자를 사용하는 수를 표현하는 방법이며 진법이 커질 수록 가지는 숫자가 증가합니다. 우리가 일반적으로 사용하는 1~9까지의 숫자를 사용하여 수를 나타내는 방법은 10진법이라고 합니다.

 

하지만 프로그램에서 사용되는 진법은 2진법, 8진법, 10진법, 16진법이 있습니다.

이러한 진법들은 프로그래밍을 하는데 있어서 중요하게 작용됩니다. 특히, 논리 연산이나 메모리와 관련된 작업을 이해하는데 도움을 줍니다. 또한, 컴퓨터는 모든 데이터를 0과 1로만 표기하여 표현을 해주기 때문에 2진법은 컴퓨터 구조 및 동작을 이해하는데 큰 역할을 합니다.

 

2진법 (Binary Notation)

2진법은 0과 1 두 개의 숫자만으로 수를 표현하는 방식입니다.

이러한 2진수는 자리값이 올라감에 따라 2배씩 커지게 됩니다.

13을 2진법으로 표현

*컴퓨터에서는 2진수의 한 자리는 비트(bit)라고 하며 이러한 비트가 4개가 모이면 니블(nibble) 8개가 모이면 바이트(byte)라고 합니다.

 

8진법 (Octal Notation)

8진법은 0~7까지의 수를 표현하는 방법입니다.

이러한 8진수는 2진수를 3자리씩 묶어서 빠르게 계산할 수 있으며 프로그래밍 초창기에 컴퓨터에서 많이 사용되었습니다.

175를 8진법으로 표현

10진법 (Decimal Notation)

10진법은 0~9까지의 수를 표현하는 방법입니다. 보통 우리의 일상 속에서 수를 나타낼때 사용하는 방법입니다.

3179를 10진법으로 표현

16진법 (Hexadecimal Notation)

16진법은 0~9까지의 숫자와 A~F까지의 문자를 함께 사용하여 수를 표현하는 방법입니다.

이러한 16진수는 프로그래밍을 하는데 있어서 1바이트(byte)의 크기를 쉽게 표현이 가능하여 많이 사용되고 있습니다.

 

0~9까지는 10진수와 동일하지만 10~15부터는 A~F문자를 사용하여 아래의 표와 같이 나타냅니다.

16진수는 한 자리숫자로 0~15까지 표현 가능합니다!

685를 16진법으로 표현

 

이제 Visual Studio를 통하여 실습을 해보겠습니다!

'\t'는 프로그래밍에서 Tab을 표현합니다. Tab은 칸을 띄워주는 역할을 합니다.

'\n'은 프로그래밍에서 개행 즉, 밑으로 한 칸을 내려주는 역할을 합니다.

결과창을 확인해보면 시작점과 문자 T 사이의 공백이 나타나는데 '\t'가 적용된 것입니다.

'\n'이 적용되면서 다음 줄로 개행되어 'O'가 나온것을 확인 할 수 있습니다.

 

위 코드에서 Write() 와 WriteLine() 두 가지의 차이점을 보면 Write()는 개행이 포함되지 않은 명령어이고 WriteLine()는 개행이 포함된 명령어입니다.

 

또 따른 예제를 들어 보겠습니다.

위 코드에서 사용된 ' '(작은따옴표) " "(큰 따옴표)의 차이점은 작은 따옴표는 한 글자만을 취급하고 큰 따옴표는 널(Null)을 포함한 문자들을 취급합니다. char문을 사용할 때는 ' '(한글자)를 사용하며 string문을 사용할 때는 " "(문자열)을 사용합니다.

 

예제에서, '\u2023'은 한 글자가 아닌데 왜 적용이 되었지? 라고 의문을 가질 수가 있는데 이것은 컴퓨터가 유니코드 기반이기 때문에 적용이 되는 것입니다. 이 내용은 나중에 자세하게 다루겠습니다!

 

Boolean형 기본 타입

 

boolean형이란 컴퓨터에서 참(True)과 거짓(False)을 나타내는 숫자 0과 1만을 이용하는 방식입니다.

위의 예제에서 isNumeric2 = 7 > 6; 의 경우, 대입 연산자(=)와 논리 연산자(>)가 동시에 있는 경우 논리연산자가 먼저 적용이 됩니다. 연산자의 우선 순위도 나중에 다루겠지만 대입 연산자가 순위가 가장 낮습니다.

 

 

암시적 변환과 명시적 변환

 

암시적 변환

첫번째 줄 byte 와 int는 type이 다르지만 오류가 뜨지 않는 이유는 둘 다 같은 정수형으로 취급되기 때문에 오류가 발생하지 않습니다. 250을 byte로 변환하고 byte와 적절한지 내부적으로 컴파일을 해줍니다. 하지만 byte의 범위인 255가 초과되면 오류가 발생하게 됩니다.

두번째 줄 short와 byte는 type의 크기가 다릅니다(short는 2byte, byte는 1byte) 그렇기 때문에 데이터의 손실이 없으면서 short형에 byte형을 대입해도 오류가 발생하지 않습니다.

 

 

명시적 변환

ushort는 정수형 char는 문자형이기 때문에 같은 2 byte의 크기를 가져도 오류를 발생한다.

오류를 발생시키지 않기 위해서는 두번째 예제와 같이 ushort형을 char으로 변환을 시켜줘야하는데 이 과정을 캐스팅(casting)이라고 한다. 'A'가 나오는 이유는 65가 아스키코드표에서 'A'를 나타내기 때문이다.

또 다른 예제를 볼때 캐스팅을 해주었지만 입력했던 값과는 다르게 나왔는데 이러한 경우는 보수가 입력되어 정확한 값을 얻어내기가 힘들다.

 

이번에는 문자 또는 문자열을 입력 받아보겠습니다.

위의 예제에서는 ReadLine()이라는 명령어로 글자를 입력 받았습니다. 입력 받았다기 보다는 문자를 저장했다고 볼 수 있습니다. 변수 input이라는 문자열에 "test"라는 문자를 저장한 후 input을 write()로 출력하였습니다.

이번에는 같은 명령어 ReadLine()으로 변수에 값을 입력받아서 출력하였습니다. 위에 코드를 비교했을 때, 밑에 예제는 좀 더 간략하게 코딩하여 출력이 될수 있다는 것을 볼 수 있습니다. 문자열 안의 {0}에 input을 대입 하였습니다. 

만약, 한 가지가 아닌 여러가지를 입력받아 출력하고 싶다면 위의 예제와 같이 ReadLine()으로 저장할 변수를 원하는 만큼 입력 받은 후 {0},{1},{2} ... {n} 입력받은 정수의 갯수만큼 숫자도 입력 받아 주시면 됩니다.

이번에는 정수를 입력 받아 보겠습니다. 먼저 명령어 int.Parse()는 문자열을 정수로 변환하는 메서드 입니다. 정수를 변환한 메서드를 입력 받기 위해서는 Console.ReadLine()을 다시 입력해주어야 합니다!

위의 예제는 여러 가지의 수를 입력 받아 더하기, 빼기, 곱하기를 한 결과 입니다. 나누기는 조금 더 복잡하여 추후에 다루겠습니다. 오늘은 Console.ReadLine(), int.Parse()를 배웠습니다. 앞으로 많이 사용하기 때문에 외우실 필요는 없지만 자연스럽게 습득하실 거예요! 하지만 외워두면 더 좋겠죠? 갈수록 포스팅해야하는 양이 많아지지만 힘내서 포스팅 해보겠습니다! 이상 포스팅을 마치겠습니다 :)

Hasta Luego~!

'C#' 카테고리의 다른 글

C# 수업#6  (0) 2020.05.27
C# 수업#5  (0) 2020.05.26
C# 수업#4  (0) 2020.05.25
C# 수업#2  (0) 2020.05.21
C# (Visual Studio 2019 설치 방법) #1  (0) 2020.05.20