프로그래밍 기초 36

동적 배열

알고리즘 문제를 풀다 제한된 메모리를 초과해서 문제를 틀린 적이 있다. 무엇이 문제인가 찾아봤더니 for문에서 append를 사용하면 시간이 더 걸릴 수 있다고 나왔다. 왜 그런지 알아보자 얻어갈 지식 append() 사용 시 받는 불이익 동적 배열과 append() 동적 배열은 여유분의 메모리를 미리 할당받아 놓는 방식으로 만들어진다. 배열에 실제 데이터가 있는 크기를 size 그리고 여유 메모리를 포함한 할당받은 전체 메모리 크기를 capacity라고 한다. append()가 호출되면 size의 값을 1 키우고 그 위치에 새로운 값을 할당시키는 방식으로 돌아간다. 하지만 여유 메모리를 모두 사용하게 되면 하는 수 없이 아래와 같은 재할당 과정을 거쳐야 하는데, 이 재할당 과정이 빈번히 일어나면 일어날..

32bit vs 64bit

윈도우 32bit 와 64bit의 차이가 무엇인지 알아보자. 얻어갈 지식 32bit와 64bit의 차이 "32bit vs 64bit" 32bit 64bit는 cpu의 한 부분인 레지스터가 한 번에 처리할 수 있는 용량을 뜻한다. 32bit는 한 번에 32bit 만큼의 용량을 처리하고 64bit는 한 번에 64bit 만큼의 용량을 처리하는 것이다. 따라서 32bit는 한 번에 최대 2^32 = 4,294,967,296를 표현 64bit는 한 번에 최대 2^64 = 18,446,744,073,709,551,616를 표현할 수 있다. 단순히 2배 차이가 아니라 어마어마한 차이의 숫자이다. 더하여 32bit는 4G만큼의 메모리만 사용할 수 있다는데 ( 메모리를 더 꽂아도 딱 4G 만큼만 사용 함 ) 레지스터가 ..

Java에서 String 생성 시 ""와 new 의 차이

Java에서 String 생성 시 "" 리터럴을 사용하여 만드는 방법과 new 키워드를 사용해 만드는 방법의 차이는 무엇일까? 얻어갈 지식 Java에서 String형 변수 생성 시 ""리터럴과 new 키워드의 차이 "리터럴과 new 키워드의 차이" Java에는 heap이라는 저장 공간이 있는데 이 heap안에 string pool이 존재한다. "" 리터럴로 String을 만들면 이 string pool 안에 들어가는데 들어가기 전 이미 중복된 문자열이 있는지 확인하고 있다면 해당 주소 값을 공유하게 된다. 반면 new 키워드를 사용해 개체를 생성하면 다른 개체와 똑같이 string pool을 제외한 heap안에 생성되며 같은 글자를 갖는 String 개체가 있더라도 새로운 독립된 개체를 생성하게 된다. ..

비트 패턴

비트 패턴이란 무엇일까? 얻어갈 지식 비트 패턴 "비트 패턴" 비트는 2진수가 아닌 패턴으로 이해해야 한다. 다시 말해 비트는 해당 비트가 표현하는 것이 무엇이냐에 따라 숫자도 표현할 수 있고 다른 무엇도 될 수 있다. 비트 패턴은 4비트로 묶어 보는 것이 편하다. 0100 1000 0010 1111 이것을 16진수 명명법으로 나타낼 수도 있다. ( 482F ) 가끔가다 3비트씩 묶어 보는 경우도 있다. 001 101 010 이것을 8진수 명명법으로 나타낼 수 있다. ( 152 ) https://paranmir.wordpress.com/2011/01/23/programming-%EB%B9%84%ED%8A%B8%EC%99%80-%EB%B9%84%ED%8A%B8%ED%8C%A8%ED%84%B4/ [PROGR..

컴퓨터의 음수 표현과 보수법

컴퓨터는 어떻게 음수를 나타낼까? 얻어갈 지식 보수법 MSB ( most significant bit ) "보수법" 우선 컴퓨터가 음수를 표현하는 방법을 알아보기 전에 보수법에 대해 알아보자. 보수란 보충해주는 수라는 의미다. 좀 더 자세히 말하면 R진법의 수 X가 있을 때 X를 R의 최소 제곱수가 되도록 만드는 수를 R의 보수라 고한다. 10진법의 수 3이 있을 때 3을 10의 최소 제곱수 ( 이 경우 10 )로 만드는 수는 7이므로 ( 3+7=10 ) 10진법 3의 10의 보수는 7이다. 10진법의 수 12가 있을 때 12를 10의 최소 제곱수( 이 경우 100 )로 만드는 수는 88이므로 ( 12+88=100 ) 10진법 12의 10의 보수는 88이다. 일반적으로 R진법에는 R의 보수와 R-1의 보..

signed, unsigned

signed와 unsinged는 어떤 의미 일까 얻어갈 지식 signed, unsigned 비트 "signed, unsigned" signed는 양수, 음수, 0 모두 표현이 가능한 값을 뜻하고 unsigned는 오직 0과 양수만 표현이 가능한 값을 뜻한다. 8bit로 예를 들어 보자. 더보기 bit는 '0'또는 '1'같이 서로 배타적인 상태를 나타낼 수 있는 컴퓨팅과 디지털 통신에서 가장 작은 정보 단위다. 1byte는 보통 8bit를 뜻한다. 8bit로 나타낼 수 있는 수는 0000 0000 ~ 1111 1111까지의 수 이므로, 2^8 = 256 가지이다. 이러한 8bit로 0을 포함한 정수를 나타낸다면 0 ~ 255까지 표현이 가능하고 음의 정수를 포함한다면 -128 ~ 127까지 표현이 가능하다..