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

 

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

    사람은 자신의 삶을 살아가면서 보고 듣고 읽은 것을 통해 배워가고 지식 혹은 지혜를 정립해나아간다.

자신에 대한 정립 또한 마찬가진데, 생각보다 많은 사람들이 주변사람들이 자신에 대한 평가들을 바탕으로 자신이 어떤 사람인지에 대해 정립을 해나가고 있다.

 

나 또한 그랬었다. 비교로 인해 열등감도 가져봤고, 비교로 인해 우월감도 가져봤다. 주변사람들의 언행 하나하나에 신경써가면서 내가 뭔가 더 해야하지 않을까? 내가 아직 많이 부족한가? 라는 생각도 많이 했었다.

 

하지만 나 자신에 대한 믿음이 매우 중요하다는 사실을 알게되었다.

뭐든 배우면 되고 되고 도전하면 된다.

내가 뭐가 부족하건 누가 뭐라건 상관이 없는 것이다.

남이 결정하는 '나'는 중요하지 않고 내가 결정하는 '나'가 중요한 것이다.

 

그리고 그 결정이 나 자신을 만든다.

 

'나'는 생각보다 괜찮은 사람이다. 그리고 내가 원하는 모든 것을 이루어 갈 것이다.

또한 내가 '나'를 생각하듯 '남'을 생각하자. 세상엔 가치 없는 사람이란 없으니까.

 

내가 해준 칭찬 한마디가 '남'이 다시 한번 자신의 가치를 정립하는 계기가 될 수 있으니까.

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

인재의 기준  (0) 2021.10.26

+ Recent posts