소스 코드 201

[C#] 미디 분석 프로그램 만들기 – 4. 트랙 청크 4.6 System Event

1. 유튜브 동영상 강의 미디 분석 프로그램 - 트랙 청크 분석, System Event 2. System Event Message 현재 미디 파일에 헤드 청크와 트랙 청크를 분석하는 작업을 진행하고 있습니다. 현재 헤드 청크는 상세 분석하였고 트랙 청크도 메타 이벤트와 미디 이벤트는 분석하는 기능까지 구현했어요. 이번 강의에서는 시스템 이벤트를 분석하는 작업을 진행할게요. 앞에서 얘기했듯이 상태 바이트가 0xF0~FE까지가 시스템 이벤트입니다. 다음은 상태 바이트에 따른 시스템 이벤트에 관한 설명입니다. 0xF0 … 0xF7 ☞ System Exclusive Messages 상태 바이트 뒤에 제조사 ID가 오며 그 뒤에 오는 메시지는 가변적이며 맨 뒤에 0xF7이 옵니다. 0xF1 DD ☞ MTC Qu..

[C#] 미디 분석 프로그램 만들기 – 4. 트랙 청크 4.5 Midi Event 상세 구현

1. 유튜브 동영상 강의 미디 분석 프로그램 - 트랙 청크, 미디 이벤트 상세 분석 지난 강의에서 미디 이벤트를 분석하는 부분을 구현하였습니다. 이번 강의에서는 미디 이벤트의 상세 내용을 분석하기로 할게요. 2. 미디 이벤트 지난 강의에서 설명한 미디 이벤트 중에 이번에 상세 구현할 부분만 다시 설명하기로 할게요. Note off, Note on, Key after touch에서 F는 음 번호, S는 음 세기입니다. 음 번호를 12로 나누었을 때 몫은 옥타브이며 나머지는 음 이름입니다. Control Change에서 F는 컨트롤 번호이고 S는 새로운 값입니다. 컨트롤 번호에 대응하는 이름은 이전 글(MIDI 파일 MIDI 이벤트의 Control 데이터와 악기 이름)에 있어요. Program Change에..

[C#] 미디 분석 프로그램 만들기– 4. 트랙 청크 분석 4.4 Midi Event

1. 유튜브 동영상 강의 미디 분석 프로그램 - 트랙 청크 분석, 미디 이벤트 2. 미디 이벤트 앞에서 우리는 미디 파일은 청크들의 집합이라는 것과 청크에는 Header 청크와 Track 청크가 있다는 것을 확인하였습니다. 그리고 Track 청크에는 이벤트 정보들이 있고 이벤트 정보에는 메타 이벤트, 미디 이벤트, 시스템 이벤트가 있다는 것도 소개하였습니다. 바로 이전 강의에서는 메타 이벤트를 분석하는 코드를 작성했었죠. 이번에는 미디 이벤트를 분석하는 코드를 작성하기로 할게요. Track 청크는 이벤트들로 구성한다고 앞에서 얘기를 했고 이벤트는 delta time이 오고 그 뒤에 오는 상태 정보가 0~0xEF까지는 미디 이벤트, 0xF0~0xFE까지는 시스템 이벤트, 0xFF는 메타 이벤트라고 하였습니..

[C#] 미디 분석 프로그램 만들기– 4. 트랙 청크 분석(MTrk) 4.3 Meta Event 상세 구현(키, 박자 정보 등)

1. 유튜브 동영상 강의 미디 분석 프로그램 - 트랙 청크 분석, Meta Event 2. 해야 할 일 이전 글에서 미디 파일의 Track 청크의 메타 데이터에 관해 다루고 이를 분석하는 소스 코드를 소개하였습니다. 그런데 메타 데이터의 내용을 무조건 문자열로 구성하고 있다는 가정으로 정보를 제공하였습니다. 하지만 메타 데이터 내용은 약속된 수치로 특별한 의미를 나타내는 것도 있어요. 대표적으로 박자와 키 정보 등을 들 수가 있어요. 이번에는 메타 데이터의 내용을 상세하게 분석하여 제공하는 기능을 구현하기로 할게요. 3. MetaEvent 클래스 추가 구현 ehmidi 라이브러리의 MetaEvent 클래스에 상세 정보를 제공하는 MetaDescription 속성을 추가합시다. 템포나 박자 등을 계산하는 ..

[C#] 미디 분석 프로그램 만들기 – 4. 트랙 청크 분석(MTrk) 4.2 Meta Event

1. 유튜브 동영상 강의 미디분석 프로그램 만들기 - 트랙 청크 분석, 미디이벤트 2. Meta Event 이전 강의에서 미디 파일에서 Track 청크의 기본 구조와 delta time을 구하는 것에 관하여 다루었어요. 이번에는 Track 청크의 Meta 이벤트에 관하여 알아보고 분석하는 소스 코드를 소개할게요. Track 청크의 이벤트는 delta time과 이벤트 정보로 이루어져 있다는 것을 이전 게시글에서 얘기했어요. 또한 이벤트 정보는 Meta 이벤트, System 이벤트, Midi 이벤트 중에 하나라는 것도 소개했었죠. 이벤트 정보가 Meta 이벤트, System 이벤트, Midi 이벤트 중에 어떤 것인지를 확인하려면 delta time 뒤에 오는 첫 번째 바이트 정보의 값을 확인하여야 합니다...

Part 20. 문자열

Part 20. 문자열 68. 문자열 문자열 - C언어 프로그램을 작성하다 보면 문자열 데이터를 사용할 때가 많아요. 대부분의 프로그래밍 언어에서는 문자열을 관리하는 별도의 형식을 제공하지만 C언어는 문자열 형식을 제공하지 않아요. 그렇다고 C언어에서 문자열 데이터를 표현할 수 없는 것은 아니예요. C언어에서는 문자열을 char 형을 원소로 하는 배열이나 char 형을 원소로 하는 포인터 형식으로 문자열을 표현할 수 있어요. 그리고 문자열 데이터를 표현할 때 쉽게 표현할 수 있게 쌍 따옴표를 사용하여 문자열을 표현할 수 있어요. #define MAX_NAME_LEN 50 char name[MAX_NAME_LEN + 1] = "hello"; const char *str = "yahoo"; char 형식 원..

[C#] 미디 분석 프로그램 만들기– 3. Head 청크, MThd

1. 유튜브 동영상 강의 미디 분석 프로그램 만들기 - 헤더 청크 분석 2. 해야 할 일과 이론 이전 글에서 미디 파일은 청크들의 집합이라는 얘기와 함께 이를 확인하는 C# 소스 코드를 소개하였습니다. 이번에는 미디 파일의 청크 중에 Head 청크의 구조를 알아보고 이를 분석하는 C# 소스 코드를 소개할게요. 미디 파일의 head 청크는 14 바이트로 구성합니다. 청크 타입부분의 값은 ASCII 코드에서 Mthd에 해당하는 값(16진수로 4D 54 68 64)이 옵니다. 헤드 청크의 길이는 6바이트입니다. Head 청크의 데이터는 포멧, 트랙 개수, division으로 구성합니다. 포멧은 2바이트 차지하며 0,1,2 중에 하나입니다. 0: 단일 트랙, 1: 다중 트랙(여러 악기를 표현하기 쉬움), 2: ..

[C#] 미디 분석 프로그램 만들기– 2. 청크 목록 분석

1. 유튜브 동영상 강의 미디분석 프로 그램 만들기 - 청크 목록 분석 2. 해야 할 일 이번에는 미디 파일 구조를 간단히 알아보고 이를 분석하는 간단한 응용 프로그램을 작성해 보기로 할게요. 먼저 미디(Midi)는 Musical Instrument Digital interface로 전자악기의 디지털 데이터를 주고 받기 위한 표준 규격입니다. 여기에서는 미디 파일 구조를 점진적으로 분석하고 이를 이용하는 프로그램을 단계적으로 작성해 나가기로 할게요. 미디 파일은 덩어리(청크, Chunk)들의 집합입니다. 미디 파일은 여러 개의 청크들로 구성하고 있다는 거예요. 그리고 청크는 청크 유형(4바이트), 청크 길이(4바이트), 청크 데이터(청크 길이)의 조합이예요. 3. StaticFuns 정적 클래스 정의 S..

Part 19. 함수 만들기 실습

Part 19. 함수 만들기 실습 61. 함수 만들기 실습 시나리오 함수 만들기 실습 - C언어 이번에는 단순한 기능을 수행하는 함수들을 직접 만들고 호출해서 사용하는 실습을 진행할게요. 함수 만들기 실습은 해야 할 일을 분석하는 것부터 시작하며 이런 작업을 도메인(Domain) 분석이라고 불러요. 도메인 분석이 끝나면 적당한 이름을 결정하고 입력 매개변수 리스트와 반환 형식을 결정할 거예요. 그리고 테스트 코드를 작성한 후에 실제 함수를 구현하는 순서로 실습할게요. 여러분은 함수 만들기 과정을 통해 기본적인 알고리즘 논리 전개와 함수 원형을 결정하는 능력을 키워야겠죠. 어떤 종류의 프로그래밍 언어를 사용하더라도 이러한 능력은 필수적으로 필요해요. 여러분은 각 단계별로 진행하고 난 후에 책의 내용과 비교..

Part 18. 다양한 종류의 변수 (전역, 지역, 정적, 상수화)

Part 18. 다양한 종류의 변수 (전역, 지역, 정적, 상수화) 57. 전역 변수 다양한 종류의 변수, 전역 변수, 지역 변수, 정적 변수, 상수화 변수 - C언어 아시는 것처럼 C언어에서는 프로그램에서 관리할 데이터를 할당하고 관리하기 위해 변수에 관한 문법을 제공하고 있죠. C언어에서는 프로그램의 모든 함수에서 접근할 수 있는 전역 변수와 선언한 블록에서만 접근할 수 있는 지역 변수가 있어요. 그리고 이 외에도 정적 변수와 상수화 변수를 제공하는데 이들에 관해 하나 하나 살펴봅시다. 전역 변수 C언어에서는 변수 선언을 특정 블록 내부가 아닌 외부에 선언한 변수를 전역 변수라 불러요. 전역 변수는 프로그램 시작할 때 할당하고 프로그램 끝날 때 해제하며 프로그램 전제 영역에서 접근할 수 있죠. 예를 ..

Part 17. 매개변수 전달 원리

Part 17. 매개변수 전달 원리 56. 매개변수 전달 원리 매개변수 전달 원리 - C언어 이번에는 함수 호출에서 종료까지 수행 원리를 간단히 알아볼게요. 함수를 호출하면 해당 함수의 지역 변수를 위한 메모리를 스택에 할당해요. 그리고 피호출 함수의 동작이 끝나면 호출한 함수의 다음 부분을 수행하는 것이 기본 동작이죠. main 함수가 시작하면 main함수의 지역 변수를 위한 메모리를 스택에 할당해요. 그리고 Add 함수를 호출하면 입력 인자를 복사한 후에 Add 함수의 지역 변수를 할당한 후에 복사한 값으로 초기화를 수행하죠. 그리고 함수의 return 문을 만나면 자신의 스택 영역 바로 밑(호출 함수 스택의 맨 위)에 반환 값을 설정해요. 그리고 자신의 스택 메모리를 해제한답니다. 호출 결과를 대입..

4. WaferLine 예광탄 – 4.3 WaferLine 동작 구현 [Wafer 코팅 시뮬레이션]

유튜브 동영상 강의 Form1.cs 소스 코드 using System; using System.Windows.Forms; using WaferLineLib; namespace WaferLine_예광탄 { public partial class Form1 : Form { WaferLine wl = null; public Form1() { InitializeComponent(); wl = new WaferLine(1); } private void tbar_wafer_Scroll(object sender, EventArgs e) { if (wl == null) { return; } lb_wafer.Text = tbar_wafer.Value.ToString(); } private void tbar_pr_Scrol..

4. WaferLine 예광탄 – 4.2 WaferLine 클래스 정의 [Wafer 코팅 시뮬레이션]

1. 유튜브 동영상 강의 Wafer 코팅 시뮬레이션 - WaferLine 예광탄 WaferLine 소스 코드 using System; using System.Collections; using System.Collections.Generic; using WaferLineLib; namespace WaferLineLib { public class WaferLine : IEnumerable { public int No { get; } public int Spin { get; set; } public int Drop { get; set; } public WaferLine(int no) { No = no; Spin = 1000; Drop = 20; } List bwafers = new List(); List aw..

Part 15. 배열과 포인터 사용은 인덱스와 간접 연산자 [디딤돌 C언어]

Part 15. 배열과 포인터 사용은 인덱스와 간접 연산자 49. 간접 연산자 배열과 포인터 사용은 인덱스와 간접 연산자 [디딤돌 C언어] 피연산자로 포인터를 사용하는 더하기, 빼기 연산은 프로그램 메모리 주소를 계산하거나 상대적 거리를 계산하죠. 하지만 실제 개발자는 프로그램 메모리 주소를 아는 것은 큰 의미가 없어요. 개발자는 특정 프로그램 메모리 주소에 있는 값을 얻어오거나 설정하는 것을 원해요. C언어에서 포인터(배열 이름 포함)가 갖는 메모리 주소에 원하는 값을 설정하거나 얻어오는 방법은 크게 간접 연산자와 인덱스 연산자를 사용하는 방법이 있어요. 간접 연산자는 선언문이 아닌 코드 구문에서 포인터 형식을 피연산자로 오는 단항 연산자예요. 연산 기호는 포인터 변수를 선언할 때 사용한 지시 연산자 ..

Part 14. 배열과 포인터 그리고 산술 연산 [디딤돌 C언어]

Part 14. 배열과 포인터 그리고 산술 연산 45. 배열과 포인터 개요 배열과 포인터 개요 및 배열 선언문 동영상 강의 C언어에서는 같은 형식의 여러 데이터를 효과적으로 사용할 수 있는 배열을 제공하고 있어요. C언어에서 제공하는 기본 형식들은 변수가 관리하는 데이터가 하나여서 변수 이름은 갖고 있는 값을 의미하죠. 하지만 배열은 관리하는 데이터가 여러 개이므로 배열 이름이 특정 값을 대표할 수 없어요. C언어에서는 배열 이름은 관리하는 특정 값이 아닌 배열에 할당한 메모리의 시작 주소를 의미한답니다. 배열의 원소에 접근할 때는 배열 이름과 상대적 거리를 의미하는 인덱스 값을 사용하는 것이 일반적이예요. 예를 들어 3번째 원소를 접근하려면 시작 위치에서 거리 2이므로 인덱스 2를 사용해요. 따라서 상..

3. 라이브러리 만들기 [Wafer 코팅 시뮬레이션]

유튜브 동영상 강의 Wafer 코팅 시뮬레이션 - 라이브러리 만들기 안녕하세요. 언제나휴일입니다. 1. 해야 할 일 Wafer 클래스를 정의하고 Double Buffering 가능한 DPanel을 정의했습니다. 그리고 Wafer의 코팅 상태를 시각화하는 부분을 작성했습니다. Wafer 코팅 시뮬레이션에서 Wafer 클래스는 WaferLineLib에 정의할 것입니다. 그리고 DPanel과 Waper를 시각화하는 WaferPanel은 WaferLineControlLib에 정의할 것입니다. 이번에는 WaferLineLib와 WaferLineControlLib를 만드는 실습을 할 거예요. 물론 앞에서 만든 Wafer 클래스를 WaferLineLib에 추가하고 DPanel과 Panel을 시각화하는 부분을 Wafe..

2. Wafer 예광탄 [Wafer 코팅 시뮬레이션]

유튜브 동영상 강의 안녕하세요. 언제나 휴일입니다. 이번 강의는 Wafer 예광탄을 작성하는 실습입니다. 1. Wafer 클래스 소스 코드 namespace Wafer_예광탄 { /// /// Wafer 클래스 /// public class Wafer { static int last_wn;//가장 최근에 부여한 웨이퍼 일련 번호 readonly int wn;//웨이퍼 일련 번호 int[] cells = new int[100]; int now;//현재 코팅할 쉘 번호 /// /// 기본 생성자 /// public Wafer() { last_wn++; wn = last_wn;//웨이퍼 번호 순차 부여 } /// /// 현재 코팅하고 있는 쉘 번호 속성 - 가져오기 /// public int Now { get..

매크로 및 정리하기(제어문)

43. 매크로 구문 C언어에서는 자주 사용하는 표현을 약속하여 쉽게 표현할 수 있게 매크로 구문을 제공하고 있어요. 매크로 구문은 자주 사용하는 표현을 약속한 후 개발자가 매크로 구문을 사용하여 쉽게 코드를 작성하는 문법이예요. 개발자가 매크로 구문으로 코드를 작성하면 컴파일러가 기계어 코드로 번역하기 전에 약속한 구문으로 바꾸어 줘요. 이러한 과정을 전개라 부르며 컴파일 전에 수행해서 전처리 구문이라고도 불러요. C언어에서는 #include문으로 다른 파일의 내용을 포함시키거나 #define문으로 매크로 구문을 약속하는 것이 대표적이죠. #include #include “파일명” #include 문은 다른 파일에 있는 내용을 포함시키는 매크로 구문이예요. 개발도구를 설치하면서 함께 설치한 파일들이 있는..

Kakao 번역 API와 .NET 음성 Speech를 이용한 번역 나래이터 만들기 1. 소개[언제나 WPF]

유튜브 동영상 강의 번역 나래이터 만들기 프로젝트 소개 00;00 인사 00:26 개발할 번역 나래이터 프로그램 시연 02:38 정의해야 할 형식들 소개 03:00 제작할 WrapkakoLib 라이브러리 소개 04:15 제작할 WrapSpeechLib 라이브러리 소개 안녕하세요. 언제나 휴일에 언휴예요. 이번에는 Kakao 번역 API와 .NET 음성 Speech 기술을 Mash up해 볼게요. 두 개의 기술 모두 사용하는 것은 크게 어렵지 않습니다. 그리고 최근에 응용이나 앱, 웹에서는 이러한 것을 지원하려고 노력하는 것 같네요. 실제 해당 기술을 사용해 본 적이 있다면 프로그램 제작에 걸리는 시간은 1시간~2시간 정도입니다. 여기에서는 이러한 기술을 경험해 보려는 이들을 위해 기술별로 제작해 나갈게요..

Kakao 번역 API와 .NET 음성 Speech를 이용한 번역 나래이터 만들기 2. 번역 라이브러리 만들기[C#]

유튜브 동영상 강의 [WPF] 번역 나래이터 - 번역 라이브러리 만들기 KakaoTransApi 소스 코드 using System; using System.Collections.Generic; using System.IO; using System.Net; using System.Text; using System.Web.Script.Serialization; namespace WrapKakaoLib { /// /// 언어 정보 열거형 /// public enum LanguageInfo { kr, en, jp, cn, vi, id, ar, bn, de, es, fr, hi, it, ms, nl, pt, ru, th, tr, MAX_LI } /// /// 카카오 음성 API - 정적 클래스 /// public..

Kakao 번역 API와 .NET 음성 Speech를 이용한 번역 나래이터 만들기 3. WrapSpeechLib 만들기[C#]

유튜브 동영상 강의 [WPF] 번역 나래이터 - WrapSpeechLib 만들기 Narrator 소스 코드 using System.Collections.Generic; using System.Globalization; using System.Speech.Synthesis; using WrapKakaoLib; namespace WrapSpeechLib { /// /// 번역 나래이터 클래스 /// public class Narrator { static SpeechSynthesizer speecher = new SpeechSynthesizer(); static Dictionary voice_dics = new Dictionary(); static Narrator() { foreach (InstalledVoi..

Kakao 번역 API와 .NET 음성 Speech를 이용한 번역 나래이터 만들기 4. 최종 번역 나래이터 구현[ WPF]

유튜브 동영상 강의 번역 나래이터 구현 화면 배치 MainWindow.xaml.cs 소스 코드 using System.Collections.Generic; using System.Windows; using System.Windows.Controls; using WrapKakaoLib; using WrapSpeechLib; namespace 번역_나래이터_v0._1 { /// /// MainWindow.xaml에 대한 상호 작용 논리 /// public partial class MainWindow : Window { public MainWindow() { InitializeComponent(); } private void btn_speek_Click(object sender, RoutedEventArgs ..

[C++] 3. 입출력 개요 (cin, cout)

3. 입출력 개요 (cin, cout) C++ 입출력 개요 cin cout 여기에서는 앞으로 C++ 문법 학습하기 위해 필수적으로 사용할 입출력에 관한 사항을 간략하게 살펴보기로 할게요. C언어에서는 stdio.h 파일을 포함하여 표준 입출력 함수들을 사용했었죠. C++에서도 C언어에서 제공하는 함수들을 사용할 수 있어요. 하지만 C++언어에서 콘솔 화면에 출력하거나 키보드에서 입력받을 때 printf 함수나 scanf 함수를 사용하는 이들은 거의 없어요. C++ 언어에서는 iostream 파일을 포함하여 cout과 cin 개체를 사용할 수 있어요. iostream은 STL(Standard Template Library,표준 템플릿 라이브러리)에서 제공하는 클래스이며 cout과 cin은 미리 선언한 전역..

Part 12. 제어문 I (조건문과 선택문)

C언어 - 제어문 (조건문, 선택문) C언어 - 제어문 실습 (조건문, 선택문) 00:14 조건문 00:53 [실습] if 문 - 홀수일 때 출력 01:58 [실습] if else 문 - 3의 배수인지 판별하여 출력 02:53 선택문 03:49 [실습]if 문으로 학점 출력하기 06:10 [실습] switch case 문으로 학점 출력하기 39. 조건문 (if else) C언어에서는 조건에 따라 수행할 작업을 판단하거나 반복해서 수행하는 등의 제어문을 제공해요. 조건 표현식에 따라 구문을 수행하는 조건문과 조건 표현식이 참일 동안 반복해서 구문을 수행하는 반복문, 표현식의 값에 따라 수행할 위치를 선택하는 선택문 등이 있어요. 그리고 미리 특정 코드에 대응하는 표현을 약속하는 매크로 구문을 제공하고 있어..

Part 11. 대입, 증감, 기타 연산자

C언어 - 대입, 증감, 기타 연산자 00:14 대입 연산자 01:09 [실습] 대입 연산자 l-value 01:42 [실습] 복합 대입 연산자 02:19 [실습] 대입 연산자 우선 순위 03:27 증감 연산자 03:57 [실습] 증감 연산자 05:15 기타 연산자 05:28 [실습] 콤마 연산자 06:30 [실습] 형 변환 연산자 07:05 [실습] sizeof 연산자 07:45 [실습] 삼항 조건 연산자 35. 대입 연산자 =, +=, -=, *=, /=, %= 등 대입 연산은 변수의 값을 설정할 때 사용하는 연산이죠. 이러한 이유로 대입 연산의 좌항에는 상수 표현은 올 수 없으며 l- value라 불러요. 대입 연산자에는 우항의 값을 좌항에 대입하는 단순 대입 연산과 좌항과 우항의 값을 더하거나 빼..

Part 10. 비트 연산자와 쉬프트 연산자

C언어 - 비트 연산자, 쉬프트 연산자 00:19 비트 연산자 01:22 [실습] 비트 연산자 02:44 xor 연산을 이용한 대칭형 암호화 03:28 [실습] xor 연산을 이용한 대칭형 암호화 05:46 쉬프트 연산자 07:00 [실습] 쉬프트 연산 32. 비트 연산자 & | ^ ~ C언어에서는 비트 단위로 논리 연산을 수행하는 비트 연산을 제공하고 있어요. 비트 연산의 피연산자는 정수 형식이 올 수 있어요. 이항 연산자 &는 비트 단위로 논리곱 연산을 수행하죠. 예를 들어 6&5를 하면 6은 이진수로 110이고 5는 이진수로 101이므로 6&5의 연산 결과는 이진수 100이고 10진수 4예요. 이항 연산자 | 는 비트 단위로 논리합 연산을 수행하죠. 예를 들어 6|5의 연산 결과는 이진수 111 이..

Part 9. 산술, 논리, 비교 연산자

[C언어] 산술, 논리, 비교 연산자 00:19 산술 연산 00:35 [실습] 부호 연산 01:35 [실습] 사칙 연산 04:05 [실습] 나머지 연산 05:32 논리 연산자 05:46 [실습] 논리 연산 07:18 [실습] 논리 연산에서 주의할 점 09:03 비교연산자 09:18 [실습] 비교 연산자 10:01 비교 연신에서 주의할 점 29. 산술 연산자 프로그래밍 언어는 관리해야 할 데이터를 위한 문법도 제공하지만 수행해야 할 코드를 작성하는 문법도 제공하죠. 이번에는 C언어에서 수행할 코드를 작성하는 가장 기본적인 문법인 연산자를 다룰게요. C언어에서는 사칙 연산이나 논리 연산, 비트 연산을 비롯하여 30여 가지의 연산자를 제공하고 있어요. 여러분은 책에 나온 예제 코드를 직접 작성하여 하나 하나 ..

Part 6. 정수 형식의 표현 범위와 Overflow 값 잘림 현상

[C언어] Part 6. 정수 형식의 표현 범위와 Overflow 값 잘림 현상 17. 정수 형식의 표현 범위 char 형식과 unsigned char 형식은 정수를 표현할 때도 사용할 수 있다고 했어요. 두 가지 형식 모두 1바이트를 할당하여 256가지의 정수를 표현할 수 있답니다. unsigned char 형식은 부호 없는 정수만 표현하므로 0~0xFF(0~255)까지 표현 가능해요. char 형식은 최상위 비트가 0인 0x00~0x7F(0~127)까지는 부호없는 정수예요. 그리고 최상위 비트가 1인 0x80~0xFF(-128~-1)까지는 부호있는 정수죠. ◈ char 형식과 unsigned char 형식의 표현 범위 확인 #include int main() { char c = 0; unsigned ..

Part 5. 문자 형식과 ASCII 코드

Part 5. 문자 형식과 ASCII 코드 15. ASCII 코드 C언어 - 문자 형식과 ASCII 코드 C언어에서 char 형식은 -128~127까지의 정수를 표현할 수 있는 정수 형식이예요. 형식 이름을 보면 알 수 있듯이 char 형식은 문자를 표현할 때 많이 사용하죠. 미국 표준 기구(ANSI, American National Standards Instutitute)에서는 영문 알파벳과 숫자 문자와 여러 기호를 아스키 코드로 정의했어요. 아스키 코드에는 128개의 문자를 약속하고 있답니다. 최초의 아스키 코드는 하드웨어 사이에서 주고 받는 신호를 약속한 것으로 제어 신호도 포함하고 있어요. char 형식이 8비트(1바이트)죠. 첫번째 비트는 0이고 나머지 비트를 아스키 코드를 이용하여 표현해요. ..

Part 2. 첫 번째 프로그램 Hello, World!

[디딤돌 C언어] Part 2. 첫 번째 프로그램 Hello, World! 6. 첫 번째 프로그램 만들기 이제 처음으로 간단한 프로그램을 만들어 봐요. 프로그램 언어를 공부할 때는 머리로 이해하는 것도 필요하지만 받드시 개발 도구에서 만들어 보는 것이 필요해요. 책의 내용을 머리로 이해했다고 만족하지 마시고 개발도구로 만들어 보세요. 이번에 만들 프로그램은 콘솔 화면에 “Hello, World”를 출력하는 프로그램이예요. 여러분은 이 과정을 통해 개발 도구에서 C언어로 프로그램을 만드는 과정을 익힐 수 있어요. 그리고 C언어의 문법 요소도 간단히 살펴볼 수 있답니다. 여기에서는 Microsoft Visual Studio 2022 개발 도구를 사용할게요. (2023년 12월 26일 현재 동영상에서는 Vis..