1. . NET 이란?
-닷넷 프레임워크(.NET Framework, 이전 이름: 닷넷)는 마이크로소프트에서 개발한 윈도우 프로그램 개발 및 실행 환경이다. 네트워크 작업, 인터페이스 등의 많은 작업을 캡슐화하였고, 공통 언어 런타임(Common Language Runtime)(CLR)이라는 이름의 가상 머신 위에서 작동한다.
우리가 주로 사용하는 도메인 (ex daum.net / naver.com)은 숫자로 이루어진 IP주소를 (203.133.167.81)를 문자화 한것 입니다. DNS 또는 Domain Name System은 사람이 읽을 수 있는 도메인 이름(예: www.amazon.com)을 머신이 읽을 수 있는 IP 주소(예: 192.0.2.44)로 변환합니다.
컴퓨터의 저장 단위 | ||||
비트 (Bit) |
바이트 (Byte) |
킬로바이트 (Kilobyte) |
메가바이트 (Megabyte) |
기가바이트 (Gigabyte) |
테라바이트 (Terabyte) |
페타바이트 (Petabyte) |
엑사바이트 (Exabyte) |
제타바이트 (Zettabyte) |
요타바이트 (Yottabyte) |
Binary Digit를 줄인 말. 1번의 의미와도 서로 통한다. 정보라고 취급할 수 있는 가공된 데이터(자료)들을 나타내는 최소 단위이며, 컴퓨터 용량이나 프로그램 처리능력의 최소 단위로 사용한다. 2의 X제곱에서 이 X가 바로 비트를 나타낸다. 또한 8비트=1바이트인데, 이는 컴퓨터가 문자 데이터를 8개의 비트 단위로 묶어 한 번에 처리하기 때문이다. 참고로 ASCII 코드는 한 문자당 최대 7비트(128가지)의 문자를, EBCDIC 코드는 한 문자당 최대 8비트(256가지)의 문자를 표현할 수 있다.
2^8 = 256 가지수 (0~255)
4bite = nibble
8bite = 1byte = 2nibble
1024byte = 1Kbyte 1000M = 1KM
1024Kbyte = 1Mbyte
1024Mbyte = 1Gbyte
1024Gbyte = 1Tbyte
(컴퓨터는 2진법 체계로 우리가 살고 있는 10진법 세상과는 다르게 2의 제곱수로 만든 1000에 가장 근접한 숫자가 1024이다.)
2^16 = 65,536/1024 = 64Kbyte
2^32 = 4Gbyte
2^64 = 16,777,216Tbyte
2진법 특성상 프로그래밍할때 소수점은 최대한 자제 곱셈보다는 덧셈으로 입력하여 최적화!
자동차 속도 프로그램 - 1byte(0~255) 로 가능
-프로그램을 만드는 주체는 사람이기 때문에 문자를 사용
byte speed;
| |
type name
L-value = R-value
변수only 상수and변수
2.L-value와 R-value의 정의
L-value는 반드시 명시적인 메모리 공간을 가져야 합니다. 값이나 개체를 대입 받기 때문입니다.
그러나 R-value는 잠깐 사용하고 사라지는 임시적인 값입니다.
어찌되었거나 잠시만 유지해서 L-value에 값을 전해줄 수만 있으면 됩니다.
이에 R-value는 ‘임시 값’에 대한 통칭이 됩니다.
1 | int value = 20; |
이 코드는 허용됩니다. 20은 상수이며, ‘임시 값’이고, R-value이기도 합니다.
(상수의 경우 기계어로 번역시 명령어에 그대로 포함되며, 코드 영역의 일부가 됩니다.)
1 | 20 = value; |
따라서 ‘임시 값’에 대입하는 위와 같은 코드는 허용되지 않습니다.
1 2 |
int value = 20; value = 20 + value; |
두번 째 value에 대한 대입문이 동작할때, 연산자 우선순위에 따라 20 + value가 먼저 처리됩니다.
그리고 이 20+ value라는 값은 새로운 ‘임시 값’, r-value가 되어 l-value인 value에 대입됩니다.
이 임시 값은 이 대입 식이 끝나면 사라집니다.
3.l-value와 r-value의 차이점
l-value와 r-value의 가장 큰 차이점은 바로 이름입니다.
l-value는 이름에 의해 프로그래밍으로 제어할 수 있습니다.
그러나 r-value는 이름이 없습니다. 내부적으로 사용되고, 내부적으로 사라집니다.
따라서 프로그래밍으로 제어할 수 없습니다.
4.부호비트방식
이는 최상위 비트(Most Significant Bit)를 부호표기를 위해 남겨두는 방식이다.
예를 들어 8 bit 자료의 경우에는 양수 1은 0000 0001, 음수는 1000 0001으로 표현하는 방식이다.
하지만, 이는 +0과 -0이라고 0이 두 개 존재하는 문제가 있고, 양수와 음수간의 연산이 어렵다는 단점이 있어 실수(float, double)방식의 표현에만 쓰인다.
5.2의 보수법 방식
보수(補數)는 각 자리의 숫자의 합이 어느 일정한 수가 되게 하는 수이다. - 위키백과
각 진법의 보수에는 같은 수의 보수법과 같은 수 -1의 보수법이 존재한다.
예를 들자면 10진수에선 10의 보수법과 9의 보수법이 존재하는 것이다.
십진수 7의 10의 보수는 7과 어떤 수를 합했을 때 10이 되어야 하므로,
7 + x = 10, 즉 x는 3이 된다.
십진수 7의 9의 보수는 7 + x = 9가 되어야 하므로 2가 된다.
위 둘의 관계를 볼 때 10진수의 10의 보수는 9의 보수 + 1 과 같다는 것을 알 수 있다.
컴퓨터는 2진수를 사용하므로 2의 보수법과 1의 보수법이 존재한다.
이진수의 보수법은 아주 간편한데, 우선 1의 보수법을 알아보겠다.
이진수 1111 1011의 1의 보수는 그냥 반대로 뒤집은 수라 생각하면 편하다.
즉, 0000 0100 이 되는 것이다.
여기서 2의 보수를 구하려면 +1 만 시켜주면 되므로 0000 0101이 된다.
그런데 여기서 신기한 것이 1111 1011과 이 숫자의 2의 보수를 덧셈을 해주면 다음과 같은 결과를 확인할 수 있다.
1111 1011
+ 0000 0101
1 0000 0000
최상위 1만 제외하면 0이 되는 것이다!
위의 1111 1011를 담을 수 있는 크기를 8 bit로 한정한다면, 제일 높은 자리수 1을 버림으로서 뺄셈 연산을
할 수 있다는 것이다.
이진수 1111 1011은 십진수로 바꿨을 때 251이 되고 0000 0101은 5가 되는데...
이런 원리를 이용하면 2의 보수법으로 구한 수와 덧셈 연산을 함으로써 뺄셈 연산을 할 수 있게 된다.
즉 251을 -5로 인식하도록 만드는 것이다.
8 bit가 표현할 수 있는 숫자의 범위는 0~255가 되는데, 그 반인 127에서 잘라 128부터는 거꾸로 음수-128 로 표현하는 것이다.
예를 들어 8 - 5를 보수법으로 계산을 해본다고 하면, 우선 -5의 보수를 구해보자
-5 의 2의 보수는 1111 1011이 된다.
1111 1011 >> -5의 2의 보수
+ 0000 1000 >> 십진수 8의 이진수
1 0000 0011
위와같이 8 bit 범위를 넘는 윗 자리수 1만 제외하면 3이라는 값이 나오는 것을 확인할 수 있다.
이와 같이 2의 보수법을 사용하면 덧셈만으로도 뺄셈 연산을 할 수 있게 되는 것이다.
6.유니코드
전 세계의 모든 문자를 다루도록 설계된 표준 문자 전산 처리 방식. 이것을 규율하는 단체는 유니코드 콘소시엄(Unicode Consortium)이다. 주요 구성 요소는 ISO/IEC 10646 Universal Character Set과 UCS, UTF 등의 인코딩 방식, 문자 처리 알고리즘 등이다. 전 세계의 모든 문자를 담는 ISO/IEC 10646 코드표를 사용함으로써, 각 언어와 문자 체계에 따른 충돌 문제를 해결하였다. 따라서 유니코드를 사용하면 한글과 신자체·간체자, 아랍 문자 등을 통일된 환경에서 깨뜨리지 않고 사용할 수 있다.
초창기에는 문자 코드는 ASCII의 로마자 위주 코드였고, 1바이트의 남은 공간에 각 나라가 자국 문자를 할당하였었다. 하지만 이런 상황에서 다른 국가에 이메일을 보냈더니 글자가 와장창 깨졌던 것(...) 인터넷 웹페이지도 마찬가지였다. 이에 따라 2~3바이트의 넉넉한 공간에 세상의 모든 문자를 할당한 결과물이 이것이다. 다만 로마자(혹은 프로그래밍, url 등의 통신 포함) 입장에서는 용량이 두배가 되어 이래저래 비효율인 셈이 되어서, 가변길이 문자 인코딩(UTF-8)을 도입해서 기존 ASCII와 호환되는 규격도 도입했다. 흔히 우리가 웹 브라우저의 인코딩을 설정하면서 자주 보는 UTF-8이라는 말이 이것이고, 바로 유니코드에 기반한 인코딩 방식 중 하나를 가리키는 것이다.
현재의 유니코드는 지구상에서 통용되는 대부분의 문자들을 담고 있다. 여기에는 언어를 표기할 때 쓰는 문자는 물론, 악보 기호, 이모티콘, 태그, 마작이나 도미노 기호 같은 것들도 포함된다.
위의 프로그래밍은 type 별 특징에 따라 값을 입력하여 컴파일 한 화면이다.
그러하다 끝
'C#' 카테고리의 다른 글
C# - 복합대입연산자/ WHILE문/FOR문/중첩문METHOD/순서도 작성/METHOD 호출하는법/C#으로 소수 나열 하기 (0) | 2023.02.21 |
---|---|
C# 프로그래밍-[float,double,decimal/5칙연산/if 조건절/디버깅/다양한 연산자] (0) | 2023.02.21 |
C#-주말 개인 공부(C#)(0524) (0) | 2023.02.21 |
c# 네트워크 공부 2(클래스 활용) (0) | 2021.01.15 |
c# 네트워크 공부 (IPAddress 클래스 / Dns클래스) (0) | 2021.01.14 |
라디오 버튼과 그룹 박스 사용법 (0) | 2021.01.01 |