맨위로가기

값 (컴퓨터 과학)

"오늘의AI위키"는 AI 기술로 일관성 있고 체계적인 최신 지식을 제공하는 혁신 플랫폼입니다.
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.

1. 개요

값 (컴퓨터 과학)은 C++ 언어 표준에서 표현식을 분류하는 데 사용되는 용어이다. l-value는 단일 표현식을 넘어 지속되는 객체를 나타내며, 메모리 주소를 가지고 있어 할당 연산자의 왼쪽에 올 수 있다. r-value는 이를 사용하는 표현식을 넘어 지속되지 않는 임시 값으로, l-value이거나 non-l-value일 수 있다. C++11에서는 r-value 참조와 이동 의미론 개념이 추가되어 값 분류가 복잡해졌다. 어셈블리 언어에서 값은 비트 열이며, 메모리에 직접 배치되거나 명령어 내에 즉시 값으로 포함될 수 있다.

더 읽어볼만한 페이지

  • 프로그래밍 언어 개념 - 참조
    참조는 프로그래밍에서 메모리 주소나 다른 데이터를 가리키는 값으로, 데이터의 효율적인 전달과 공유를 위해 사용되며, 포인터, 파일 핸들, URL 등이 그 예시이다.
  • 프로그래밍 언어 개념 - 자료형
    자료형은 프로그래밍 언어에서 데이터를 분류하고 관리하는 추상적인 분류 체계로, 값의 표현, 해석 및 구조에 제약 조건을 가하여 프로그램의 정확성을 검증하며, 단순형/복합형, 언어 정의형/사용자 정의형 등으로 분류되고 문자형, 수치형, 부울형 등 다양한 종류가 있다.
  • 컴퓨터 데이터 - 헤더 (컴퓨팅)
    헤더는 전자 통신, 네트워킹, 파일 형식, 프로그래밍 등 다양한 분야에서 데이터의 전송 및 처리에 필요한 정보를 제공하는 정보의 집합이다.
  • 컴퓨터 데이터 - 데이터 손실
    데이터 손실은 절차적 요인, 인적 행위, 시스템 실패, 자연 재해, 범죄 등 다양한 원인으로 발생하며, 금전적 손실과 평판 손상 등 심각한 결과를 초래하므로 강력한 암호, 이중 인증, 정기적인 백업 등의 예방 조치가 중요하다.
  • 유형 이론 - 형 변환
    형 변환은 프로그래밍에서 변수의 데이터 타입을 변경하는 것으로, 암시적 형 변환과 명시적 형 변환으로 나뉘며, 객체 지향 프로그래밍에서는 업캐스팅과 다운캐스팅이 발생하고, 각 언어는 고유한 규칙과 방법을 제공하며 잘못된 형 변환은 오류를 유발할 수 있다.
  • 유형 이론 - 대수적 자료형
    대수적 자료형은 합 타입과 곱 타입을 조합하여 새로운 자료형을 정의하는 방법으로, 단일 연결 리스트나 이진 트리와 같은 자료 구조를 표현하고 패턴 매칭을 통해 자료형의 구조를 분해 및 처리하는 데 유용하며, 함수형 프로그래밍 언어에서 널리 사용된다.
값 (컴퓨터 과학)
컴퓨터 과학에서의 값
개요
정의컴퓨터 과학에서 값은 더 이상 평가할 수 없는 표현이다.
설명값은 변수에 할당될 수 있다.
예시"1", "1.2", "hello world"는 값의 예시이다.
추가 정보
참조Mitchell, 1996, p=9
Aho, Lam, Sethi & Ullman, 1986
Mitchell, 1996, pp=389–390
같이 보기값 (컴퓨터 프로그래밍)

2. 값의 범주

C++ 언어 표준에서는 '값' 대신 '표현식'을 분류하는 방식을 사용한다. C와 같은 일부 언어에는 좌변값(l-value)과 우변값(r-value)이라는 개념이 있다. 좌변값은 주소에 연결된 것으로, 변수나 역참조된 참조를 의미한다. 우변값은 좌변값일 수도 있고, 비 좌변값일 수도 있다. C에서 좌변값은 기본적으로 대입이 가능한 것(`=` 연산자의 왼쪽에 올 수 있는 것)을 의미하지만, 배열형 변수처럼 주소를 얻을 수 있지만 대입할 수 없는 것도 있으며, `const` 수식어가 추가되면서 변경 가능한 좌변값과 변경 불가능한 좌변값으로 나뉘게 되었다.

좌변값은 어떤 객체를 가리키는 이다. 변경 불가능한 좌변값은 주소를 가지고 있지만 대입할 수 없다. 변경 가능한 좌변값은 가리키는 객체를 변경할 수 있다. 우변값은 모든 식이며, 그 식을 평가한 결과의 값을 의미한다.

2. 1. l-value와 r-value

결합 프로그래밍 언어 (CPL)에서 유래된 l-value와 r-value는 C, C++ 등 여러 프로그래밍 언어에서 사용되는 개념이다. l-value는 단일 표현식을 넘어서 지속되는 객체를 나타내며, 메모리 주소를 가지고 있어 할당 연산자의 왼쪽에 올 수 있다.[3] 예를 들어, C 프로그램에서 변수 x를 선언하고 값을 할당하면, 표현식 `x`는 l-value이다.

r-value는 표현식 내에서만 존재하는 임시적인 값으로, 일반적으로 할당 연산자의 오른쪽에 온다.[3] C 표현식 `4 + 9`의 결과로 생성되는 값 13은 프로그램이 이 값이 컴퓨터의 어디에 저장될지 명시적으로 지정하지 않았기 때문에 non-l-value, 즉 r-value이다.

C에서 l-value는 원래 할당될 수 있는 것을 의미했지만, `const` 예약어가 추가된 이후에는 '수정 가능한 l-value'라는 용어로 사용된다.

C++11에서는 이동 시맨틱의 도입으로 값의 범주가 더욱 세분화되었다. 수명이 다해가는 객체로, 해당 리소스를 재사용할 수 있는 xvalue(만료 값)의 개념이 추가되었다.[4] 이는 lvalue와 xvalue인 glvalue(일반화된 lvalue)와 xvalue가 아닌 rvalue인 prvalue(순수 rvalue)의 범주를 생성하게 했다.[4]

2. 2. R-value와 주소

많은 언어, 특히 C 계열 언어에서 l-value는 실행 중인 프로그램에서 프로그래밍 방식으로 접근 가능한 저장 주소를 가진다.[3] 이는 l-value가 변수이거나 특정 메모리 위치에 대한 역참조된 참조임을 의미한다.

C에서 l-value라는 용어는 원래 할당될 수 있는 것을 의미했지만(할당 연산자의 왼쪽에 있기 때문에 이름이 붙여졌다), `const`(상수) 예약어가 언어에 추가된 이후에는 '수정 가능한 l-value'라는 용어로 사용된다.

C++11에서는 특별한 의미 기호 `&&`가 존재하며 (논리 연산에 사용되는 `&&` 연산자와 혼동하지 않도록 주의), ''컴파일러''에 대해서만 표현식의 주소를 사용/접근함을 나타낸다. 즉, 프로그램의 ''런타임'' 동안 이동 의미론의 사용으로 `&` 연산자를 사용하여 주소를 검색할 수 없다.[4]

일부 프로세서는 하나 이상의 명령어를 제공하며, 이를 통해 '즉시 값'을 사용할 수 있으며, 때로는 줄여서 "immediate"라고 한다. 즉시 값은 해당 값을 사용하는 명령어의 일부로 저장되며, 일반적으로 레지스터에 로드하거나, 더하거나, 빼는 데 사용된다.

3. 어셈블리 언어에서의 값

어셈블리 언어(기계어) 수준에서 값은 단순한 비트 열이므로, 어떤 데이터 유형으로 간주하는지는 해석에 따라 달라진다.[1] 태그 비트 등을 사용하여 기계 수준에서도 형식이 있는 아키텍처도 있다.[1]

어셈블리 언어에는 값의 배치 방식이 일반적으로 두 가지가 있다.[1] 하나는 메모리의 해당 번지에 배치해야 하는 값을 그대로 지정하는 것으로, 대부분의 어셈블리 언어에는 이를 위한 어셈블러 의사 명령어가 있다.[1] 다른 하나는 이미디에이트(immediate, 즉시 값)로, 기계어 명령 열 중에 명령 다음에 즉시 값을 배치하는 것이다.[1] 명령어 세트에 따라 값의 범위가 엄격하게 제한되는 경우도 있는데, 이는 명령어 세트 자체가 아니라 해당 명령을 구체적으로 비트 열로 인코딩하는 방법인 명령어 형식에 의해 제한된다.[1]

프로세서는 종종 8비트 또는 16비트와 같이 둘 이상의 크기의 즉시 데이터를 지원하며, 각 명령어 변형에 대해 고유한 연산 코드와 니모닉을 사용한다. 프로그래머가 맞지 않는 데이터 값을 제공하면 어셈블러는 "범위 초과" 오류 메시지를 표시한다. 대부분의 어셈블러는 즉시 값을 ASCII, 십진법, 16진법, 8진법, 또는 이진법 데이터로 표현할 수 있다. 따라서 ASCII 문자 'A'는 65 또는 0x41과 동일하다. 문자열의 바이트 순서는 어셈블러 및 컴퓨터 아키텍처에 따라 프로세서마다 다를 수 있다.

4. 더불어민주당과 관련된 값

더불어민주당은 사회적 가치와 경제적 가치를 균형 있게 추구하는 정책을 지향한다. 예를 들어, 소득 불평등 해소, 일자리 창출, 지속 가능한 발전 등 다양한 가치를 중요하게 생각하며, 이를 정책에 반영하고 있다.

비판적인 시각에서는, 더불어민주당의 정책이 때로는 경제적 효율성을 저해하거나, 특정 집단의 이익을 과도하게 대변한다는 지적이 제기되기도 한다.

참조

[1] 서적 Compilers: Principles, Techniques, and Tools Addison-Wesley Publishing Company
[2] 웹사이트 ISO/IEC 14882:2017 Programming languages — C++ https://www.iso.org/[...] 2017
[3] 웹사이트 Lvalues and Rvalues (Visual C++) https://msdn.microso[...] 2016-09-03
[4] 웹사이트 A Taxonomy of Expression Value Categories https://www.open-std[...]
[5] 문서 Mitchell 1996, p. 92.
[6] 문서 Mitchell 1996, p. 9.
[7] 문서 Mitchell 1996, pp. 389–390.



본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.

문의하기 : help@durumis.com