C# : 마이크로소프트(Microsoft)가 만든 객체지향 프로그래밍 언어
Windows 프로그램, 웹, 게임, 앱, 서버 개발에 사용
C#은 .NET 플랫폼에서 동작하는 현대적인 객체지향 언어
| 분야 | 예시 |
|---|---|
| 데스크톱 앱 | 윈도폼, WPF |
| 웹 | ASP.NET, Blazor |
| 게임 | Unity |
| 모바일 | Xamarin, .NET MAUI |
| 서버 | Web API, 백엔드 |
| IoT | 장비 제어 프로그램 |
입력 출력 예시
namespace FirstProgram { internal class Program { static void Main(string[] args) { string a = Console.ReadLine(); Console.WriteLine(a); } } } // "출력"이라고 입력 // 출력
| 분류 | 자료형 | 설명 |
|---|---|---|
| 정수 | int | 정수 (가장 기본적으로 사용) |
| 정수 | long | 큰 정수 |
| 실수 | float | 소수점 숫자 (낮은 정밀도) |
| 실수 | double | 소수점 숫자 (기본 실수형) |
| 실수 | decimal | 정확한 소수 계산 (금융) |
| 문자 | char | 문자 1개 |
| 논리 | bool | 참 / 거짓 |
| 문자열 | string | 문자열 : 문자의 집합 |
java에서 문자열 사용법
String a = "hello"; String b = "hello"; System.out.println(a == b); // ❌ 참조 비교 System.out.println(a.equals(b)); // ✅ 내용 비교
C#에서 문자열 사용법
string a = "hello"; string b = "hello"; Console.WriteLine(a == b); // ✅ 내용 비교
java에서는 문자열을 비교하기 위해서 equals()라는 메서드를 이용하여 문자열 내용을 비교할 수 있고
C#은 ==라는 연산자를 이용하여 문자열 내용을 비교할 수 있다.
이유 : C#에서는 string에 대해 == 연산자를 오버로딩되어 있음 → 이로 인해 문자열 내용 비교를 수행
| 연산자 | 의미 | 예시 | 결과 |
|---|---|---|---|
== | 같다 | a == b | 같으면 true |
!= | 같지 않다 | a != b | 다르면 true |
> | 크다 | a > b | 크면 true |
< | 작다 | a < b | 작으면 true |
>= | 크거나 같다 | a >= b | 크거나 같으면 true |
<= | 작거나 같다 | a <= b | 작거나 같으면 true |
true/false)| 연산자 | 의미 | 설명 | 명칭 | 예시 |
|---|---|---|---|---|
&& | AND | 둘 다 참이면 참 | 논리합 연산자 | a > 0 && b > 0 |
| || | OR | 하나라도 참이면 참 | 논리곱 연산자 | a > 0 || b > 0 |
! | NOT | 참 ↔ 거짓 반전 | 논리 부정 연산자 | !isOk |
| 연산자 | 이름 | 설명 | 예시 (2진수 계산) | 결과 |
|---|---|---|---|---|
& | AND | 두 비트가 모두 1이면 1 | 0101 & 0011 | 0001 → 1 |
| | | OR | 두 비트 중 하나라도 1이면 1 | 0101 | 0011 | 0111 → 7 |
^ | XOR | 두 비트가 다르면 1, 같으면 0 | 0101 ^ 0011 | 0110 → 6 |
~ | NOT | 비트를 반전 | ~0101 | 1010 → -6 (2의 보수) |
<< | 왼쪽 시프트 | 비트를 왼쪽으로 이동, 오른쪽 0 채움 | 0101 << 1 | 1010 → 10 |
>> | 오른쪽 시프트 | 비트를 오른쪽으로 이동, 부호 유지 | 0101 >> 1 | 0010 → 2 |
비트 연산자 사용 예시
int a = 5; // 0101 int b = 3; // 0011 Console.WriteLine(a & b); // 1 Console.WriteLine(a | b); // 7 Console.WriteLine(a ^ b); // 6 Console.WriteLine(~a); // -6 Console.WriteLine(a << 1); // 10 Console.WriteLine(a >> 1); // 2
1의 보수 : 모든 비트를 반전시키는 것
0 → 1
1 → 0
| 부호 | 값 | 2진수 | 1의 보수 값 | 1의 보수 |
|---|---|---|---|---|
+ | 5 | 00000101 | -5 | 11111010 |
+ | 8 | 00001000 | -8 | 11110111 |
11110111 은 부호 없는 정수에서는 247이지만2의 보수 : 어떤 수의 모든 비트를 반전(1의 보수)한 후 1을 더한 값
| 값 | 1의 보수 값 |
|---|---|
| +0: | 00000000 |
| -0: | 11111111 |
0이 2개면 비교 연산이 복잡해짐 → 이로 인해 2의 보수가 등장
2의 보수의 장점 : 0이 하나만 존재
2의 보수는 1의 보수값의 +1하면 나옴
ex
8 = 00001000
8 + 1 = 9
00001000 + 1 = 00001001 = 9