사람은 처음에 누구나 실수를 한다.

다만 그 실수를 다시 반복할 여지를 남겨놓느냐 아니느냐에 따라 인재나 아니냐가 갈린다.

 

살아가면서 느끼는 인재의 기준은 다음과 같다.

 

1. 스스로의 피드백이 있는가?

-> 발생한 실수에 대해 자가분석을 한 뒤 실수를 줄이기 위한 노력을 하는가?

-> 실수를 줄이기 위한 노력의 방향이 올바르게 나아가는가?

-> 얼마나 빠르게 실수를 줄여가는가?

 

-> 스스로 잘함과 못함을 판단하는 기준을 만들어가는가?

 

2. 자기발전이 있는가?

-> 부족함을 인지하고 지속적인 발전을 해나가는가?

 

결론적으로 가장 중요한 것은 스스로의 피드백이다.

대부분의 사람은 완벽하지 않다.

그 완벽하지 않은 부분을 얼마나 많은 노력을 기울여가며 발전해나가는 사람이 되는지가 가장 중요한 인재의 기준이지 않을까.

'인생' 카테고리의 다른 글

[가치관] 스스로의 가치를 낮추지 않는 것.  (0) 2020.04.26
  1. Introduction of AWS
  2. Global infrastructure
  3. Elastic Compute Cloud(EC2)
  4. Elastic Block Storage(EBS)
  5. Simple Storage Service(S3)
  6. Relational Database Service(RDS)
  7. Virtual Private Cloud(VPC)
  8. Route 53
  9. Elastic Load Balancing(ELB)
  10. Auto Scaling
  11. Cloud Formation
  12. Identity and Access Management(IAM)
  13. Lambda
  14. AWS Products
  15. Billing and Support
  16. Migration

원인

해당 에러코드의 해결책은 ML.NET 이미지 분류 튜토리얼 코드에만 한정된다.

다른 해결책은 이 링크를 참조하면 좋다. (https://creon.tistory.com/540)

 

Microsoft.ML.TensorFlow.Redist 패키지가 설치되지 않아서 발생한 문제.


해결책

 

  1. 도구 > Nuget 패키지 관리자 > 솔루션용 Nuget 패키기 관리... 클릭
  2. 찾아보기 탭에서 Microsoft.ML.TensorFlow.Redist 검색
  3. 최신버전 설치

 

 

원인

Microsoft.ML.TensorFlow 패키지가 설치되지 않아서 발생한 문제.


해결책

 

  1. 도구 > Nuget 패키지 관리자 > 솔루션용 Nuget 패키기 관리... 클릭
  2. 찾아보기 탭에서 Microsoft.ML.TensorFlow 검색
  3. 최신버전 설치

 

Error 문장

원인

Microsoft.ML.ImageAnalytics 패키지가 설치되지 않아서 발생한 문제.


해결책

  1. 도구 > Nuget 패키지 관리자 > 솔루션용 Nuget 패키기 관리... 클릭
  2. 찾아보기 탭에서 Microsoft.ML.ImageAnalytics 검색
  3. 최신버전 설치

참조

https://blog.hompus.nl/2020/06/11/unable-to-find-an-entry-point-named-ortgetapibase-in-dll-onnxruntime-with-microsoft-ml-onnxtransformer-1-5-0/

Screen이란?

리눅스에서 물리 터널을 가상 터미널로 다중화하여 특정 서비스 또는 프로그램을 백그라운드에서 돌리다가, 필요하면 포어그라운드로 가져오는 명령이라고 이해하면 편하다.


명령어

  • screen -ls
    • 백그라운드에 있는 세션 리스트를 가져온다.
  • screen -S 세션명
    • 유저가 지정한 '세션명'으로 screen을 시작한다.
  • screen -R 세션명
    • 이미 존재하는 '세션명'을 포어그라운드로 들고와 작업을 진행한다.
  • screen -D -R 세션명
    • 이전 세션이 attach 된 상태라면 detach 하고 세션을 복원한다.
  • screen -r -d
    • 세션 강제로 detach
  • screen -X 세션명
    • 동시에 여러 사용자가 한 화면을 공유하면서 작업을 진행한다.
  • screen -X -S 세션명 kill
    • 해당 '세션'을 삭제한다.
  • Ctrl + a + d
    • 스크린 attach이후 스크린을 detach하는 단축키
  • Ctrl + a + k
    • 스크린 attach이후 스크린을 종료하면서 빠져나옴
  • Ctrl + a + esc
    • 위 명령을 사용하면서 방향키를 사용하면 스크롤 가능
  • Ctrl + a + |
    • 세로로 화면 분할
  • Ctrl + a + ?
    • 키보드 단축키 보기

 

운영체제란 시스템 하드웨어를 관리하면서 응용 소프트웨어를 실행하기 위하여 하드웨어 추상화 플랫폼과 공통 시스템 서비스를 제공하는 시스템 소프트웨어를 말한다.

최근에는 가상화 기술의 발전에 힘입어 실제 하드웨어가 아닌 하이퍼바이저(가상 머신) 위에서 실행되기도 한다.

 

정리하자면 컴퓨터 시스템 자원(HW)를 효율적으로 관리하여 사용자에게 서비스를 제공하는 소프트웨어라고 말할 수 있겠다.


시스템 하드웨어

시스템 하드웨어는 다음과 같이 존재한다.

  • 프로세서
    • 종류 
      • CPU
      • 그래픽카드 (GPU)
      • 응용 전용 처리장치 등
    • 컴퓨터의 두뇌에 해당
      • 연산을 수행하며 컴퓨터의 모든 장치의 동작을 제어한다.
      • 프로세서 내부에는 제어장치가 레지스터와 연상장치를 제어하며 레지스터와 연산장치는 서로 상호작용하며 데이터를 처리한다.
        • 레지스터란?
          • 프로세서 내부에 있는 메모리
            • 프로세서가 사용할 데이터를 저장
            • 컴퓨터에서 가장 빠른 메모리
          • 종류
            • 용도에 따라
              • 전용 레지스터, 범용 레지스터
            • 사용자가 정보 변경 가능 여부에 따라
              • 사용자 가시 레지스터(데이터, 주소 레지스터)
              • 사용자 불가시 레지스터
                • 종류
                  • 프로그램 카운터
                    • 다음 실행할 명령어의 주소를 보관하는 레지스터. 계수기로 되어있어 실행할 명령어를 메모리에서 읽으면 명령어의 길이만큼 증가하여 다음 명령어를 가리키며, 분기 명령어는 목적 주소로 갱신할 수 있다.
                  • 명령어 레지스터
                    • 현재 실행하는 명령어를 보관하는 레지스터이다.
                  • 누산기
                    • 데이터를 일시적으로 저장하는 레지스터이다.
                  • 메모리 주소 레지스터
                    • 프로세서가 참조하려는 데이터의 주소를 명시하여 메모리에 접근하는 버퍼 레지스터이다.
                  • 메모리 버퍼 레지스터
                    • 프로세서가 메모리에서 읽거나 메모리에 저장할 데이터 자체를 보관하는 버퍼 레지스터이다. 메모리 데이터 레지스터라고도 한다.
            • 저장하는 정보의 종류에 따라
              • 데이터 레지스터
                • 함수 연산에 필요한 데이터를 저장함. 값, 문자 등을 저장하므로 산술 연산이나 논리 연산에 사용하며, 연산 결과로 플래그 값을 저장한다.
              • 주소 레지스터
                • 주소나 유효 주소를 계산하는데 필요한 주소의 일부분을 저장함. 주소 레지스터에 저장한 값(값 데이터)을 사용하여 산술 연산을 할 수 있다.
                • 종류
                  • 기준 주소 레지스터
                  • 인덱스 레지스터
                  • 스택 포인터 레지스터
              • 상태 레지스터
    • 운영체제와 프로세서
      • 프로세서에게 처리할 작업 할당 및 관리
        • 프로세스(Process) 생성 및 관리
      • 프로그램의 프로세서 사용 제어
        • 프로그램의 프로세서 사용 시간 관리
        • 복수 프로그램간 사용 시간 조율 등
  • 메모리
    • 종류(위로 갈수록 상위계층. 상위계층은 속도&가격이 높고 용량이 낮으며 하위계층은 속도&가격이 낮고 용량이 높다.)
      • 레지스터
      • 캐시
        • 프로세서 내부에 있는 메모리(L1, L2 캐시등)
          • 속도가 빠르고, 가격이 비쌈
        • 메인 메모리 입출력 병목현상을 해소.
        • 캐시의 동작
          • 일반적으로 HW적으로 관리됨
          • 캐시 히트(Cache hit)
            • 필요한 데이터 블록이 캐시 존재
            • 데이터를 미리 가져와 프로세서와의 데이터 교환이 매우 빠르게 이루어질 수 있음
          • 캐시 미스(Cache miss)
            • 필요한 데이터 블록이 없는 경우
            • 데이터가 없으면 메인 메모리에서 들고와야하고, 결국 처리가 느려짐
        • 지역성(Locality)
          • 공간적 지역성(Spatial locality)
            • 참조한 주소와 인접한 주소를 참조하는 특성
              • 예) 순차적 프로그램 수행
          • 시간적 지역성(Temporal locality)
            • 한번 참조한 주소를 곧 다시 참조하는 특성
              • 예) For문 등의 순환문
          • 지역성은 캐시 적중률(cache hit ratio)과 밀접
            • 알고리즘 성능 향상을 위한 중요한 요소 중 하나
      • 메인 메모리
        • 주 기억장치로써, 프로세서가 수행할 프로그램과 데이터를 저장함.
          • DRAM을 주로 사용
            • 용량이 크고, 가격이 저렴
          • 디스크 입출력 병목현상(I/O bottleneck)을 해소
      • 보조기억장치 (프로그램과 데이터를 메모리에 옮겨야만 실행 가능)
        • Auxiliary memory / Secondary memory / Storage
        • 프로그램과 데이터를 저장
        • 프로세서가 직접 접근할 수 없음(주변장치)
          • 주기억장치를 거쳐서 접근
          • (프로그램 / 데이터 > 주기억장치)인 경우는?
            • 가상 메모리 사용
        • 용량이 크고, 가격이 저렴함.
    • 데이터를 저장하는 장치
      • 프로그램(OS, 사용자sw등), 사용자 데이터 등
    • 메모리와 운영체제
      • 메모리 할당 및 관리
        • 프로그램의 요청에 따른 메모리 할당 및 회수
        • 할당된 메모리 관리
      • 가상 메모리 관리
        • 가상 메모리 생성 및 관리
        • 논리주소 -> 물리주소 변환
  • 시스템 버스(System bus)
    • 하드웨어들이 데이터 및 신호를 주고받는 물리적인 통로
    • 종류
      • 데이터 버스
        • 프로세서와 메인 메모리, 주변장치 사이에 데이터를 전송함. 데이터 버스를 구성하는 배선 수는 프로세서가 한번에 전송할 수 있는 비트 수를 결정하는데, 이를 워드라 한다.
      • 주소 버스
        • 프로세서가 시스템의 구성요소를 식별하는 주소 정보를 전송한다. 주소 버스를 구성하는 배선 수는 프로세서와 접속할 수 있는 메인 메모리의 최대 용량을 결정한다.
      • 제어 버스
        • 프로세서가 시스템의 구성 요소를 제어하는데 사용한다. 제어 신호로 연산장치의 연산 종류와 메인 메모리의 읽기나 쓰기 동작을 결정한다.
시간 레지스터 동작 설명
1 PC -> MAR PC에 저장된 주소를 프로세서 내부 버스를 이용하여 MAR에 전달한다.
2 Memory_mar -> MAR MAR에 저장된 주소에 해당하는 메모리 위치에서 명령어를 인출한 후 이 명령어를 MBR에 저장한다. 이때 제어장치는 메모리에 저장된 내용을 읽도록 제어신호를 발생시킨다.
PC + 1 -> PC 다음 명령어를 인출하려고 PC를 증가한다.
3 MBR -> IR MBR에 저장된 내용을 IR에 전달한다.
    %PC: 프로그램 카운터, MAR: 메모리 주소 레지스터, MBR: 메모리 버퍼 레지스터, IR: 명령어 레지스터
  • 주변 장치
    • 종류
      • 입력장치
        • 마우스
        • 키보드
        • 터치스크린
        • 카메라 등
      • 출력장치
        • 모니터
        • 프린터
        • 스피커 등
      • 저장장치
        • USB, CD, HDD, SDD 등
    • 주변장치와 운영체제
      • 장치 드라이버 관리
        • 주변장치 사용을 위한 인터페이스 제공
      • 인터럽트(Interrupt) 처리
        • 주변장치의 요청 처리
      • 파일 및 디스크 관리
        • 파일 생성 및 삭제
        • 디스크 공간 관리 등

만약 우리가 지각인식, 일반화, 연상, 그리고 생각을 위한 고차원 유기체의 능력을 이해하려고 한다면 우리는 반드시 세가지 근본 질문을 해야한다.

 

1. 생물학적 시스템에 의해 물리적 세계가 보내지거나 탐지된 것들은 어떻게 정보화 되는가?

2. 저장되거나 기억되는 정보들은 어떠한 형태인가?

3. 스토리지 또는 메모리에 포함된 정보는 인식과 행동에 어떠한 영향을 주는가?

 

이러한 질문들 중 첫번째는 감각 생리학의 일부분에 있고 상당한 이해가 성취된 유일한 것이였다.

이 논문은 주로 두번째와 세번째 질문에 관한 것으로 여전히 질문의 대상이 되는 방대한 양의 추측과 아직 완전하지 않은 이론들을 가진 신경생리학에 기반된 몇가지 사실들을 논할 것이다.

    두번째 질문과 관련하여, 두가지 제안들이 공방을 벌여왔다. 첫번째 제안은 감각정보의 저장이 감각자극과 저장된 패턴사이에 1대1 매핑의 몇가지 종류를 가진 코드 또는 이미지로 표현되는 형태라는 것이다. 이 가설에 따르면. 누군가 이 코드 또는 "배선 다이어그램"로 구성된 신경 시스템을 이해한다면 근본적으로 유기체가 가지고 있었던 "기억 흔적"을 원래의 감각 패턴을 재구성함으로써 유기체가 기억하는 것을 정확히 발견할 수 있어야한다.

 이 가설은 단순성과 준비된 명료성, 그리고 코드로 표현된 메모리라는 아이디어를 중심으로 한 이론적인 뇌 모델이라는데에 매력이 있다. 두번째 제안은 영국의 경험주의 전통으로부터 비롯되었으며 자극 이미지가 실제론 전혀 저장되지 않고 중추 신경계는 단순히 복잡한 스위칭 네트워크와 중심 활동 사이의 새로운 연결 또는 경로 의해 기억되는 반응이라고 추측한다. 이 가설의 가장 최근 발전된 의견으로(예를 들자면, Hebb's의 "셀 어셈블리" 및 Hull의 "대뇌 피질 예측 목표 응답") 자극과 관련된 "응답"은 CNS 자체에 완전히 포함될 수 있다고 추측한다. 여기서 응답은 행동보단 "아이디어"로 간주한다. 이 접근의 중요한 점은 다른 어떤 최신의 코드들도 이 접근법보다 쉽게 자극을 메모리에 간단히 매핑할 수 없다는 것이다.

 

-------------------------------------------------------(번역중)-------------------------------------------------------

 

Whatever in formation is retained must somehow be stored as a preference for a particular response; i.e., the information is contained in connections or associations rather than topographic representations. (The term response, for the remainder of this presentation, should be understood to mean any distinguishable state of the organism, which may or may not involve externally detectable muscular activity. The activation of some nucleus of cells in the central nervous system, for example, can constitute a response, according to this definition.) Corresponding to these two positions on the method of information retention, there exist two hypotheses with regard to the third question, the manner in which stored information exerts its influence on current activity. The "coded memory theorists" are forced to conclude that recognition of any stimulus involves the matching or systematic comparison of the contents of storage with incoming sensory patterns, in order to determine whether the current stimulus has been seen before, and to determine the appropriate response from the organism. The theorists in the empiricist tradition, on the other hand, have essentially combined the answer to the third question with their answer to the second: since the stored information takes the form of new connections, or transmission channels in the nervous system (or the creation of conditions which are functionally equivalent to new connections), it follows that the new stimuli will make use of these new pathways which have been created, automatically activating the appropriate response without requiring any separate process for their recognition or identification. The theory to be presented here takes the empiricist, or "connectionist"' position with regard to these questions. The theory has been developed for a hypothetical nervous system, or machine, called a perceptron. The perceptron is designed to illustrate some of the fundamental properties of intelligent systems in general, without becoming too deeply enmeshed in the special, and frequently unknown, conditions which hold for particular biological organisms. The analogy between the perceptron and biological systems should be readily apparent to the reader. During the last few decades, the development of symbolic logic, digital computers, and switching theory has impressed many theorists with the functional similarity between a neuron and the simple on-off units of which computers are constructed, and has provided the analytical methods necessary for representing highly complex logical functions in terms of such elements. The result has been a profusion of brain models which amount simply to logical contrivances for performing particular algorithms (representing "recall," stimulus comparison, transformation, and various kinds of analysis) in response to sequences of stimuli—e.g., Rashevsky (14), McCulloch (10), McCulloch & Pitts (11), Culbertson (2), Kleene (8), and Minsky (13). A relatively small number of theorists, like Ashby (1) and von Neumann (17, 18), have been concerned with the problems of how an imperfect neural network, containing many random connections, can be made to perform reliably those functions which might be represented by idealized wiring diagrams. Unfortunately, the language of symbolic logic and Boolean algebra is less well suited for such investigations.

Bitmap을 byte[]로 변환하는 방법.

 

 


/*
 * ----------------------------------------------------------------------------
 * "THE BEER-WARE LICENSE" (Revision 42):
 * <ggkids9211@gmail.com> wrote this file. As long as you retain this notice you
 * can do whatever you want with this stuff. If we meet some day, and you think
 * this stuff is worth it, you can buy me a beer in return Hyunjun Kim.
 * ----------------------------------------------------------------------------
 */

byte[] ConvertBitmapToByteArray(Bitmap bitmap)
{
    byte[] result = null;
    if(bitmap != null)
    {
    	MemoryStream stream = new MemoryStream();
        bitmap.Save(stream, bitmap.RawFormat);
        result = stream.ToArray();
    }
    else
    {
    	Console.WriteLine("Bitmap is null.");
    }
    return result;
}

 

 

 

 

연산자란 연산 대상이 되는 피연산자에 대한 연산을 수행하는 기호를 뜻한다.

C++에서 사용 가능한 연산자에는 산술 연산자, 관계 연산자, 논리 연산자, 증감 연산자, 대입 연산자, 그리고 비트 연산자가 있다.

 

산술 연산자

산술 연산자는 사칙연산의 연산자들과 나머지 연산자가 있다.

각 연산자의 정의는 다음과 같다.

유형 정의
+ 덧셈
- 뺄셈
* 곱셈
/ 나눗셈
% 나머지

/*
 * ----------------------------------------------------------------------------
 * "THE BEER-WARE LICENSE" (Revision 42):
 * <ggkids9211@gmail.com> wrote this file. As long as you retain this notice you
 * can do whatever you want with this stuff. If we meet some day, and you think
 * this stuff is worth it, you can buy me a beer in return Hyunjun Kim.
 * ----------------------------------------------------------------------------
 */

#include 
using namespace std;

int main()
{
    int a = 5;
    int b = 2;

    int sum = a + b; //더하기
    int sub = a - b; //빼기
    int mul = a * b; //곱하기
    int div = a / b; //나누기
    int rem = a % b; //나머지

    cout << "sum: " << sum << endl;
    cout << "sub: " << sub << endl;
    cout << "mul: " << mul << endl;
    cout << "div: " << div << endl;
    cout << "rem: " << rem << endl;
}

결과

 

sum: 7
sub: 3
mul: 10
div: 2
rem: 1

산술연산자가 연이어 사용되는 경우에는 아래와 같이 연산 우선순위를 적용한다.

1. 괄호 안의 연산자가 첫번째 우선순위를 가진다.

2. 곱셈, 나눗셈, 나머지 연산자가 그 다음 우선순위를 가진다.

3. 덧셈, 뺄셈 연산자가 그 다음 우선순위를 가진다.

4. 같은 우선순위의 연산자가 나열된 경우 좌측 연산자부터 먼저 처리한다.

 

관계 연산자

관계 연산자는 두 수를 비교하는 연산자이다.

주로 제어문에서 조건을 검사하기위해 많이 사용되며 true 혹은 false를 출력한다.

각 연산자의 정의는 다음과 같다.

 

유형 정의
== 같다
!= 다르다
> 크다
>= 크거나 같다
< 작다
<= 작거나 같다

/*
 * ----------------------------------------------------------------------------
 * "THE BEER-WARE LICENSE" (Revision 42):
 * <ggkids9211@gmail.com> wrote this file. As long as you retain this notice you
 * can do whatever you want with this stuff. If we meet some day, and you think
 * this stuff is worth it, you can buy me a beer in return Hyunjun Kim.
 * ----------------------------------------------------------------------------
 */

#include 
using namespace std;

int main()
{
    int a = 5;
    int b = 2;
    
    bool same = a == b; //같다
    bool diff = a != b; //다르다
    bool big = a > b; //크다
    bool big_or_same = a >= b; //크거나 같다
    bool small = a < b; //작다
    bool small_or_same = a <= b; //작거나 같다

    cout << "same: " << boolalpha << same << endl;
    cout << "diff: " << boolalpha << diff << endl;
    cout << "big: " << boolalpha << big << endl;
    cout << "big_or_same: " << boolalpha << big_or_same << endl;
    cout << "small: " << boolalpha << small << endl;
    cout << "small_or_same: " << boolalpha << small_or_same << endl;
}

결과


same: false
diff: true
big: true
big_or_same: true
small: false
small_or_same: false

논리 연산자

논리 연산자는 And, Or, Not의 세가지 종류가 있다.

각 연산자의 정의는 다음과 같다.

유형 정의
&& 그리고 (AND)
|| 혹은 (OR)
! 아닐때 (NOT)

/*
 * ----------------------------------------------------------------------------
 * "THE BEER-WARE LICENSE" (Revision 42):
 * <ggkids9211@gmail.com> wrote this file. As long as you retain this notice you
 * can do whatever you want with this stuff. If we meet some day, and you think
 * this stuff is worth it, you can buy me a beer in return Hyunjun Kim.
 * ----------------------------------------------------------------------------
 */

#include 
using namespace std;

int main()
{
    bool AND = true && false;
    bool OR = true || false;
    bool excl = !true;

    cout << "AND: " << boolalpha << AND << endl;
    cout << "OR: " << boolalpha << OR << endl;
    cout << "excl: " << boolalpha << excl << endl;
}

결과

 


AND: false
OR: true
excl: false

증감 연산자

증감 연산자는 변수의 값을 증가시키거나 감소시킬때 사용한다.

각 연산자의 정의는 다음과 같다.

유형 정의
++i 연산 전에 i값 1 증가
i++ 연산 후에 i값 1 증가
--i 연산 전에 i값 1 감소
i-- 연산 후에 i값 1 감소

/*
 * ----------------------------------------------------------------------------
 * "THE BEER-WARE LICENSE" (Revision 42):
 * <ggkids9211@gmail.com> wrote this file. As long as you retain this notice you
 * can do whatever you want with this stuff. If we meet some day, and you think
 * this stuff is worth it, you can buy me a beer in return Hyunjun Kim.
 * ----------------------------------------------------------------------------
 */

#include 
using namespace std;

int main()
{
    int i = 9;
    cout << "i++: " << i++ << endl; //해당 연산 후에 값 증가
    cout << "i: " << i << endl; //연산 이후에 값이 증가함.

    i = 9;
    cout << "++i: " << ++i << endl; //해당 연산 전에 값 증가됨.

    i = 9;
    cout << "i--: " << i-- << endl; //해당 연산 후에 값 감소
    cout << "i: " << i << endl; //연산 이후에 값이 감소함.

    i = 9;
    cout << "--i: " << --i << endl; //해당 연산 전에 값 감소됨.
}

결과

 


i++: 9
i: 10
++i: 10
i--: 9
i: 8
--i: 8

대입 연산자

대입 연산자는 동일한 변수가 연산자의 좌우에 모두 쓰이는 경우 간단하게 쓰기위해 사용하는 연산자를 말한다.

각 연산자의 정의는 다음과 같다.

유형 정의
+= i += j;  (이 식과 동일: i = i + j)
-= i -= j;  (이 식과 동일: i = i - j)
*= i *= j;  (이 식과 동일: i = i * j)
/= i /= j;  (이 식과 동일: i = i / j)
%= i %= j;  (이 식과 동일: i = i % j)

비트 단위 연산자

비트 연산자는 정수형 데이터의 비트를 직접 제어하는데 사용하는 연산자를 말한다..

각 연산자의 정의는 다음과 같다.

유형 정의 설명
| OR 대응 비트가 하나만 1이어도 1을 출력
^ XOR 대응 비트가 서로 다를 때 1을 출력
<< left shift 지정된 수만큼 비트들을 왼쪽으로 이동시킴
>> right shift 지정된 수만큼 비트들을 오른쪽으로 이동시킴
~ 1의 보수 0비트는 1로, 1비트는 0으로 변환

 

 

 

 

'소프트웨어 > C++' 카테고리의 다른 글

[C++] 객체지향 언어  (0) 2021.12.01
[C++] 객체지향의 개념  (0) 2021.12.01
[C++] 데이터 타입  (0) 2020.04.25

+ Recent posts