OPEN between Secret

C언어 & Java 본문

T.N.V/c & java & 변수

C언어 & Java

해가꿈꾸는달 2017. 11. 17. 01:12
반응형

c언어

-> c++ C 에서 객체 지향형 언어로 발전된것.

B언어 -> BCPL언어의 기본만 남긴 언어

어셈블리 언어로 구현된 유닉스 운영체제

1978 K&R 이라는 책에서 long, int, unsigned int 자료형이 나옴.

 

1. C언어의 문법

1) 변수

           변수의 처리는 마이크로프로세서의 ALU와 연관

           정수형은 char, int가 있으며 char 8비트로 규정되어 있어서 범위가 결정

         int cpu os에 의존적이라 변수의 크기를 조정하는 short long을 사용

signed unsigned가있는데 signed은 양,음을 취급하고 unsigned에는 양의 정수만 취급

정수형 변수 - 정수를 처리하기 위한 변수. 정수형 변수를 마이크로프로세서가 처리시
부호와 숫자범위를 결정해야함.

숫자 범위는 2진수의 몇 비트로 처리할 것인가를 결정해야 함. = 정수 처리 범위를 결정

숫자 범위는 char, short, int, long을 이용하고 부호는 unsigned를 이용한다.

           마이크로프로세서 내에서 레지스터와 ALU의 비트수가 결정되어있다?

cpu에서 음수는 2진수 체계 중 2의보수사용.

 

2) 정수형

Int

   Int의 크기는 OS종류와 컴파일러가 어떤 비트까지 가능한가에 따라 결정됨.

8비트 CPU(z-80,8051,avr)에서는 16비트로 지정,
32
비트 CPU(x86, 68000계열, ARM) 32비트로 지정.

8비트 CPU의 일반적인 형태로 char(8비트), int(16비트), long int(32비트)
따라서 short(16비트)가 쓰이는 일은 없음

32비트 CPU의 일반적인 형태 short int(16비트), int(32bit), long int(32), long long int(64bit)  -> 그래서 32비트 CPU 에서부터는 short를 사용.

CHAR

char = 8비트 단위로 처리되는 정수형 변수.(8비트로 고정, 아스키코드값 사용)

Short

Long

 

 

3) 실수형

     X86 계열은 80386에서는 ALU 따로 80387이라는 실수형 칩이 따로 있었지만
80486
에서 ALU FPU(floating-point unit)이 한 칩에 만들어짐

실수를 2진수로 표현할 때 부동소수점(Float-Point) 방식과 고정 소수점 방식이 있음.

C/C++는 부동소수점 방식을 사용 하고 이것은 국제표준 IEEE754 규격에 따름

 

Float

  단정밀도(single precision) 32비트

Float형은 숫자 끝에 f를 붙여서 32비트 단정밀도라는 것을 나타냄.
F
를 표시하지 않으면 double로 인식함

      Double

  배정밀도(Double precision) 64비트

Boolean

 

!! IEEE754

IEEE(전기 전자 기술자 협회)에서 개발한 컴퓨터에서 부동소수점을 표현하는 가장
널리 쓰이는 표준. 최신버전 IEEE 754-2008 IEEE 754-1985IEEE 754-1997을 대부분 포함
IEEE 754
에는 32비트 단정도(single-precision) 64비트 배정도(double-precision),
              43
비트 이상의 확장단정도       79비트 이상의 확장배정도가 있음

IEEE 754의 부동 소수점 표현은 크게 세 부분으로 구성

1.     최상위 비트 = 부호표시

2.     지수 부분(Exponent)

3.     가수 부분(fraction/mantissa)

 

용어 정리

1.     정수 : 자연수(1,2,3) 과 이들의 음수(-1,-2,-3) 0으로 이루어진 수

2.     마이크로프로세서 = 초소형 연산 처리 장치 = 컴퓨터의 중앙 처리 장치(CPU),
마이크로 코드(기계어 코드를 실행하기 위해 실행과정을 단계별로 나누어 처리),
마이크로 코드에 의해 단계적으로 처리함.
2
진수로 대표되는 숫자와 기호를 바탕으로 작동함.
정수 연산은 CPU내의 ALU에서 처리, 대부분의 CPU의 경우 부동소수점연산(FPU) 모듈이 없고 정수형 연산만 가능

3.     CPU 랑 마이크로프로세서는 같은 용어이지만
CPU
는 컴퓨터 전체 시스템의 위치와 입장에서 나온 말이고
마이크로프로세서는 동작 방식에서 나온 말이다.

4.     ALU(정수형 산술 논리 장치) = 마이크로프로세서의 구성 중 한 개.
  ->
수학연산, 논리연산, 쉬프트등의 수학적 연산을 담당.

5.     가비지 콜렉션(쓰레기 수집)

A.     메모리 관리 기법 중의 하나. 프로그램이 동적으로 할당했던 메모리 영역 중에서 필요없게 된 영역을 해제하는 기능.

B.      자바, C#, 일부 스크립트 언어는 쓰레기 수집 기법을 염두에 두고 설계되어 있고
C,C++
의 프로그래밍 언어는 수동 메모리 관리를 가정하고 설계되었음(쓰레기를 수집을 지원하는 구현도 존재)

!! 정수형 변수의 마이크로프로세서에서의 처리 방식

è  CPU는 성능에 따라 최대 처리 단위 비트가 결정.
ALU
와 레지스터가 연결되어 데이터가 처리됨

è  전역변수는 메모리에 변수가 설정, 지역변수인 경우 스택이나 레지스터를 이용

 

!! 마이크로프로세서 개발자 -> 기계어 설계하고, 기계어 수행을 위해 마이크로 코드를 작성, 기계어를 분류 -> 공통점을 찾음 -> 한개의 기계어 코드가 실행되는 과정을 단계별로 기능적 블럭으로 나눔. -> 디지털회로와 결합하여 동작을 하게 됨 -> 마이크로 코드는 마이크로프로세서 내의 마스크롬(Mask Rom)에 저장됨(사용자는 변경할수 없음.

 

!!컴퓨터가 동작한다는 것 = 마이크로프로세서가 연속적으로 명령 주기를 반복하여 기계어 코드를 실행한다는 것.

 

!! CPU 8, 32, 64비트의 CPU가 있다.

 

bit byte kbyte mbyte gbyte tbtye                                           

   8  1024  1024  1024  1024

svm

 

!! OS랑 컴파일러의 처리가능한 비트 수 알아보기

 

 

JAVA

1.     자바의 내장 자료형은 가상 머신이 결정한 일정한 크기와 범위를 갖음.

자바의 문자형은 char(16)비트 유니코드 방식이고 문자열은 이런 문자형의 연속으로 이루어짐.

 

2.     자바 가상 머신(JVM)

A.     자바 바이트코드를 실행할 수 있는 주체. 자바 바이트 코드는 플랫폼에 독립적.

B.      P-코드 와 스콜토크VM에 영향을 받음. 스택 기반.

C.      JVM 언어

                     i.         자바 바이트코드는 주로 자바로 작성된 소스 코드를 컴파일하여 생성됨.

                    ii.         자바로 작성된 자바스크립트는 옵션에 따라 JVM 위에서 인터프리터를 실행하기도 하고 자바바이트 코드를 동적으로 생성함.

D.     자바 플랫폼

-       자바(JAVA)는 자바로 기술된 프로글매 개발 및 실행을 할 수 있는 소프트웨어 모임의 총칭

-       자바언어, 자바 애플리케이션, 자바 애플릿, JRE, 자바 가상머신(JVM), 모바일용 자바(java ME) 자바 웹 스타트(java web start) 등과 함께 자바라 불림

                    ii.         자바 SE

-       모든 자바 플랫폼의 기본이 되는 플랫폼. 자바 가상머신, 자바 언어 규격 제정의 기준이 됨.데스크톱 환경 및 서버 환경에서 공히 널리 사용

                   iii.         자바 EE

-       기업 서버 환경에서 사용될 목적으로 제정된 플랫폼, 자바 SE에 추가 API가 더 정의된 형태

                   iv.         자바 ME

-        

                    v.         자바 카드

3.     JDK(Java Development kit)

A.     자바 se, 자바ee, 자바 ME 플랫폼 중 하나를 구현한 것.

B.      자바 플랫폼 등장 이래 지금까지 가장 널리 사용되는 소프트웨어 개발 키드(SDK)

4.     JRE

 

용어정리

1.     자바 바이트코드(java bytecode) -> 자바 가상머신이 실행하는 명령어의 형태.
->
바이트코드를 이해하고 자바 컴파일러에 의해 바이트코드가 어떻게 생성될 것인지를 이해하는 것은 C C++ 프로그래머가 어셈블리어를 이해하는거랑 같다.

2.     인터프리터

>     프로그래밍 언어의 소스코드를 바로 실행하는 컴퓨터 프로그램 또는 환경을 말함

>     원시코드를 기계어로 번역하는 컴파일러와는 대비됨

>     소스 코드를 직접 실행한다. 소스 코드를 효율적인 다른 중간 코드로 변환하고, 변환한 것을 바로 실행한다. 인터프리터 시스템의 일부인 컴파일러가 만든, 미리 컴파일된 저장 코드의 실행을 호출한다.

>     고급 언어로 작성된 원시코드 명령어들을 한번에 한 줄씩 읽어들여서 실행하는 프로그램. 고급 언어로 작성된 프로그램을 실행하는 방법은 2가지가 있는데  1은 프로그램을 컴파일 하는것이고 2는 프로그램을 인터프리터에 통과시키는 방법.

>     컴파일러는 이 고급언어로 작성된 것을 기계어로 바꾸는 것.

>     종종 프로그램의 개발단계에서 사용됨. 프로그래머가 한번에 적은 양의 내용을 추가하고 그것을 빠르게 테스트 해보기 위하여.

3.     JIT 컴파일(Just-in-time compilation) = 동적 번역(dynamic translation)

>     프로그램을 실제 실행하는 시점에 기계어로 번역하는 컴파일 기법.

>     전통적인 입장에서 컴퓨터 프로그램을 만드는 방법은 두가지가 있음 1. 인터프리터 방식 2. 정적 컴파일 방식. 인터프리트 방식은 실행 중 프로그래밍 언어를 읽어가면서 해당 기능에 대응하는 기계어 코드를 실행하는방법, 컴파일은 실행하기전에 프로그램 코드를 기계어로 번역하는 방법

>     자바 가상머신, .NET, V8(node.js) 에서 JIT 컴파일을 지원.

>     자바 컴파일러가 자바 프로그램 코드를 바이트코드로 변환, 실제 바이트코드를 실행하는 시점에서 가상 머신이 바이트코드를 기계어로 변환.

4.     P-코드

5.     스몰토크 VM

6.     클래스 로더

>     자바 클래스를 자바 가상머신(JVM)으로 동적 로드하는 자바 런타임 환경(JRE) 의 일부

>     라이브러리를 위치시키고 내용물을 읽으며 라이브러리들 안에 포함된 클래스들을 읽는 역할

 

7.     API(Applicaion Programming Interface, 응용프로그램 프로그래밍 인터페이스)

>     응용 프로그램에서 사용할 수 있도록, 운영 체제나 프로그래밍 언어가 제공하는 기능을 제어할 수 있게 만든 인터페이스

반응형

'T.N.V > c & java & 변수' 카테고리의 다른 글

JVM 메모리 구조  (0) 2017.11.23
데이터 타입  (0) 2017.11.22
끄적끄적  (0) 2017.11.20