티스토리 뷰

복습하자 복습.

https://steps-for-developer.tistory.com/3

<컴파일러는> 사람이 작성한 코드를 cpu가 알아들을 수 있는 명령어의 집합체계인 기계어로 번역해주는 것
<자바 컴파일러는> 사람이 작성한 코드를 가상cpu(JVM)가 알아들을 수 있는 자바바이트코드(클래스파일)로 바꾸어 주는 것이다.
이 클래스 파일은 jvm(java.exe)위에서 돌아가게 된다.




2진 16진 10진 계산기 http://calc.50x.eu/
데이터를 표현하는 가장 작은 단위(bit)
bit
byte
word
block
...
등이 있지만 프로그래밍단계에서는 bit와 byte만 사용한다.
bit는 1과 0의 구분으로 되어있고
<byte는 8개의 bit가 모여 하나가 된다.>     <1byte = (□□□□|□□□□) = 8bit>
<1바이트가 왜 8비트인가?왜 비트가8개나 되는가?무한의 숫자를 표현하기 위해서!>
바이트는 2진수의 집합으로 이루어져 있다. (ex)0110 0001
비트가 하나일때 2^1=2가지 (=0 또는 1이므로)
비트가 둘일때 2^2=4가지 (=00,01,10,11 즉 숫자0,1,2,3까지 표현할 수 있다.)
....
비트가 넷일때 2^4=16가지의 값이 존재하게 된다.

<비트와 바이트를 배웠으니 데이터 형마다 가진 바이트 크기 별로 값의 표현 범위를 구할 수 있다.>



<진법>
binary(바이너리) : 2진
octet(옥텟) : 8진
decimal(데시멀) : 10진
hex(헥스) : 16진

한 바이트에 가득 찼을때 위의 그림에서 보듯이
(bin)2진으로 1111 | 1111
(hex)16진으로 FF

숫자를 표현할때 프로그래밍에서는 대부분 헥스 16진으로 표현한다.
FF(16진) = 1111 | 1111(2진)  ===> 16진의 문자2개 = 1바이트 = 8비트

<16진.16진 왜 헥사를 쓰는가?중요한 것은 왜 16진 인가?>
컴퓨터의 비트연산은 비트단위로 연산하기때문에
개발자들은 비트연산을 하는 경우에 헥사로 표현하여 코딩해야
1111 1111 =  FF구나! 하고 머릿속에 연상하기 쉽다.
컴퓨터는 이진 바이너리처리(비트단위로)를 하지만 그 바이너리값을 인간이 보기는 힘들다.따라서 인간이 이해하기 쉽게 헥사값으로 표현해주는 것이다.


<자바는 2의 보수 표현을 가지고 있다.음수 작업을 할 경우 2의 보수를 가지고 계산을 한다.왜?>
<1의보수는 이진을 비트 반전처리한것 : 1111 1111 =>0000 0000 >
<2의보수는 1의보수 작업후에 +1한것>

예로 쉽게 설명하자면,
3-1의 경우 -1을 2의 보수로 바꾸어서 3에다가 더하여 계산한다.
이렇게 ①2의 보수 덧셈 연산으로 양수와 합산하여 쉽게 계산하기 위해서 2의보수를 사용한다.

그리고 ②실제로 컴퓨터 회로에서 2의 보수로 만들어 계산하는 것이 인간이 -1하듯이 계산하는 것 보다 훨씬 빠르다.




<쉬프트 연산>











'Java' 카테고리의 다른 글

Array와 List  (0) 2018.11.19
switch case문, 다양한 for문 (java의 iterator for문)  (0) 2018.11.19
객체, Class, Instance  (0) 2018.11.19
변수의 두 종류 Primitive변수와 Object변수  (0) 2018.11.19
JDK, JRE, JVM  (0) 2018.11.19