signed와 unsigned

언어/C 2016. 5. 2. 13:31

signed unsigned는 컴퓨터 프로그램에서 수를 표기하는 자료형의 특성이다.


signed

C/C++ 프로그램 언어에서 정수형 변수 중 부호를 갖는 변수를 선언 한다. 정수형 중 음수는 2의 보수 체계를 사용하므로 이 키워드에 의해 부호를 사용할 수 있도록 변수 선언할 수 있다. 그러나 정수형의 변수에서 unsigned가 없으면 음수를 사용할 수 있는 부호를 갖는 정수형이 된다. 


unsigned

unsigned C/C++ 언어에서 사용되는 지정자로 정수형과 같이 사용되어 부호 비트를 제거해 저장 가능한 양수 범위를 두배로 늘이는 역할을 한다. char int의 signed 정수형 변수에서 MSB가 부호 비트이다. 1이면 음수이고 0이면 양수이다. 그러나 unsigned을 사용하면 음수를 사용하지 않겠다는 의미 이므로 부호 비트가 필요 없다. 따라서 이진수와 같은 십진수가 된다.


unsigned char

8비트 정수형 변수 선언 char와 결합하여 선언하면 부호 비트가 필요 없으므로 0~255 범위를 갖는다.

10진수    2진수

255        1111 1111

254        1111 1110

253        1111 1101


출처 : 위키백과

'언어 > C' 카테고리의 다른 글

함수 포인터 컴파일 오류  (0) 2016.09.26
전처리문  (0) 2016.05.02
typedef  (0) 2016.05.02
static 변수  (0) 2016.03.21
메모리 관리와 메모리의 동적 할당  (0) 2016.03.20
Posted by 知彼知己百戰不殆
,

gcc -S -o (목적파일 이름) (소스파일 이름)


Posted by 知彼知己百戰不殆
,

사파리 -> 환경설정 -> 고급탭 (맨 아래쪽에 메뉴 막대에서 개발자용 메뉴 보기 체크)

'OS > Mac OS' 카테고리의 다른 글

Mac 패킷 캡쳐  (0) 2016.05.10
GCC 어셈블리 사용법  (0) 2016.05.02
MAC 터미널 'ls' 명령어 디렉토리, 파일명 색 변경  (0) 2016.04.28
특수문자. 한자 사용법  (0) 2016.03.13
스크린샷 찍는 법  (0) 2016.03.13
Posted by 知彼知己百戰不殆
,

typedef

언어/C 2016. 5. 2. 07:49

1. 원래의 이름을 못 쓰게 하지 않는다. 즉, 원래의 이름 + 가명을 사용할 수 있는 것

2. 같은 자료형에 대해서 여러가지 새로운 이름을 만들 수 있다.


사용하는 이유??

1. 여러 시스템 환경에서 사용할 수 있는 프로그램을 만들기 위해서(ex. 16bit 컴퓨터에서 뿐만이 아니라 32bit 컴퓨터에서도 사용될 수 있게 만들고 싶을 때) - typedef으로 선언된 문장 하나만 변경하면 typedef alias로 선언된 모든 문장들에 영향을 끼침

2. 자체적으로 문서화된 프로그램을 작성하는데 도움을 주기 위해서. 어느 누구라도 코드를 읽기 쉽게 하기 위해

'언어 > C' 카테고리의 다른 글

전처리문  (0) 2016.05.02
signed와 unsigned  (0) 2016.05.02
static 변수  (0) 2016.03.21
메모리 관리와 메모리의 동적 할당  (0) 2016.03.20
파일 입출력 -3  (0) 2016.03.18
Posted by 知彼知己百戰不殆
,

홈 디렉토리(cd ~)에서 ls -a 명령어를 치면 숨겨졌던 파일들도 나오는데 여기서 .bash_profile 파일을 열어서 

export CLICOLOR=1

export LSCOLORS=ExFxCxDxCxegedabagaced


를 추가해주면 된다. 맨 앞의 Ex는 blue를 뜻하며 디렉토리 명들의 색을 바꿔준다.

마지막 Cx는 실행 파일들의 색을 바꿔주며, green을 뜻한다. 나머지 중간의 색들은 어떤 걸 바꿔주는 지 모름.


이게 귀찮으면 alias 명령어를 사용하여 ls=ls -G(ls에 색을 입힘) 를 입력하는 방법도 있거나, ls 라고 타이핑하는 대신에 ls -G라고 타이핑을 해도 된다.




a black
b red
c green
d brown
e blue
f magenta
g cyan
h light grey
A bold black, usually shows up as dark grey
B bold red
C bold green
D bold brown, usually shows up as yellow
E bold blue
F bold magenta
G bold cyan
H bold light grey; looks like bright white
x default foreground or background

Note that the above are standard ANSI colors. The actual
display may differ depending on the color capabilities of
the terminal in use.

The order of the attributes are as follows:

1. directory
2. symbolic link
3. socket
4. pipe
5. executable
6. block special
7. character special
8. executable with setuid bit set
9. executable with setgid bit set
10. directory writable to others, with sticky bit
11. directory writable to others, without sticky
bit

The default is “exfxcxdxbxegedabagacad”, i.e. blue fore-
ground and default background for regular directories,
black foreground and red background for setuid executa-
bles, etc.

'OS > Mac OS' 카테고리의 다른 글

GCC 어셈블리 사용법  (0) 2016.05.02
Mac Safari 웹 소스코드 보는 법  (0) 2016.05.02
특수문자. 한자 사용법  (0) 2016.03.13
스크린샷 찍는 법  (0) 2016.03.13
루트계정 활성화  (0) 2016.03.13
Posted by 知彼知己百戰不殆
,

[알고리즘 사이트] 알고리즘 문제 풀이 사이트


오일러 프로젝트(Project Euler)

수학적인 문제들을 프로그래밍으로 해결하는 퀴즈 풀이 사이트

Synap에서 한글로 번역한 사이트를 제공하고 있다. 본 사이트의 모든 문제가 번역되어 있진 않지만 현재 100여개의 문제가 번역되어 있고 많은 사람들이 사용하고 있다. 자신이 원하는 언어로 문제를 풀고 답만 입력하면 된다. 입력한 답이 정답일 경우 다른 사람들이 문제를 푼 코드들을 볼 수 있다.

(Project Euler @kr : http://euler.synap.co.kr/)

(Project Euler @net : https://projecteuler.net/)


알고 스팟(Algospot)

프로그래밍 대회에서 배우는 '알고리즘 문제해결 전략'의 저자 구종만씨가 운영하는 사이트

C, Java, Python, C++, Scala, Javascript, Rust, Haskell, Go등 다양한 언어로 문제 풀이가 가능하며 문제별 채점결과(속도, 크기) 랭킹을 제공해준다. 다양한 알고리즘 대회의 양질의 문제들을 제공해 주고 있다. 알고스팟 캘린더에는 알고리즘 대회 스케쥴을 제공해 주고 있다. 국내 알고리즘 사이트 중에서는 Dovelet과 함께 양강체제를 구축하고 있다. 코딩 테스트를 준비하고 있다면 반드시 풀어봐야 할 사이트.

(Algospot : https://algospot.com/)


더블릿(Dovelet)

알고 스팟과 양대산맥을 이루는 알고리즘 트레이닝 사이트

C, Java, Python, C++, Perl로 문제 풀이가 가능하다. 1~30계단, 옥상으로 단계를 구분해서 운영하고 있는데 무료로 1~3계단, 옥상 레벨의 문제를 풀 수가 있다. 정회원이 되려면 소정의 금액을 지불해야 한다. 랭킹 30위 안에 들면 1년 이상 무료로 이용이 가능하다. 코딩 테스트를 준비하고 있다면 반드시 풀어봐야 할 사이트.

(Dobelet : http://59.23.113.171/index.php)


코딜리티(Codility)

해외에서 정말 유명한 알고리즘 문제 사이트

문제가 영어로 제공되어 해석의 어려움이 있을 수는 있지만 Web에서 코드를 작성하고 컴파일 결과를 확인할 수 있는 장점이 있다. 코드를 제출하게 되면 시간 복잡도와 공간 복잡도를 서버에서 채점하고 등급을 알려준다. 많은 언어를 제공하며 완성도가 높은 사이트이다. 마찬가지로 코딩 테스트를 준비하고 있다면 반드시 풀어봐야 할 사이트.

(Codility : https://codility.com/)


코딩도장

운동 도장에 매일 다니며 수련하는 것 같이 프로그래밍 문제풀이를 통해서 코딩 실력을 수련하자는 목표로 만들어진 사이트

구글, 페이스북등 유명 해외 기업과 국내 유명 기업의 코딩 문제들도 수록되어 있다. 채점은 되지 않지만 풀이를 댓글로 작성할 수 있고 다른 사람들의 풀이도 볼 수 있다.

(코딩도장 : http://codingdojang.com/)


출처 : http://ledgku.tistory.com/40

Posted by 知彼知己百戰不殆
,

Interrupt : 현재 진행중인 process를 중단시키는 사건 반드시! process 외부로부터 옴 -> handling이 있음 인터럽트가 처리된 후 프로세스 재개 >> handling은 os가 함

ex) device로부터 오는 interrupt


trap : 사용자 모드 -> 커널 모드로 바뀌는 모든 것, CPU가 OS를 실행하는 경우(스케줄러를 불러서 cpu의 사용권을 빼앗는 경우)


exception : cpu가 현재 실행중인 process(예외를 발생시킨 process)를 스스로 중단(죽임) 시키는 것. Why? cpu가 실행할 수 없는 명령을 요청한 경우. 가장 대표적인 것은 0으로 나누는 것 >> cpu가 스스로 처리. 버퍼 오버플로우(버퍼 작게 해놓고 크게 접근, 허가받지 않은 메모리 접근) -> handling이 있음 가장 대표적인 것 >> 가상메모리 페이지 fault (페이지 테이블에 페이지가 없을 경우, 물리 메모리에 없을 때) >> OS가 처리


'OS' 카테고리의 다른 글

CPU 스케줄링  (0) 2016.01.19
컴퓨터 시스템의 구성  (0) 2015.12.26
Posted by 知彼知己百戰不殆
,

static 변수

언어/C 2016. 3. 21. 14:16

'언어 > C' 카테고리의 다른 글

signed와 unsigned  (0) 2016.05.02
typedef  (0) 2016.05.02
메모리 관리와 메모리의 동적 할당  (0) 2016.03.20
파일 입출력 -3  (0) 2016.03.18
파일 입출력 -2  (0) 2016.03.13
Posted by 知彼知己百戰不殆
,

힙 영역 : 사용자가 원하는 시점에 변수를 할당/소멸 하도록 지원. '프로그래머가 관리하는 메모리 공간'이라고도 하는데, malloc 함수 호출로 할당된 메모리 공간은 프로그래머가 직접 free 함수 호출을 통해 해제하지 않으면 계속 남아있다.

지역변수와 같이 함수가 호출될 때마다 매번 할당이 이뤄지지만, 할당이 되면 전역변수와 마찬가지로 함수를 빠져나가도 소멸되지 않는 성격의 변수가 필요. 힙에 할당된 메모리 공간은 포인터 변수를 이용해서 접근해야 한다. 주소 값을 반환하기 때문.


힙 영역의 메모리 공간 할당과 해제 : malloc, free 함수

1
2
3
4
#include <stdlib.h>
 
void * malloc (size_t size);
void free (void * ptr);


malloc 함수는 성공 시 할당된 메모리의 주소 값 반환, 실패 시 NULL 반환


malloc 함수의 반환형은 void * 형이므로 반환값에 아무런 가공도 하지 않으면 할당된 메모리 공간에 접근 불가능.

malloc 함수는 원하는 만큼 메모리 공간 할당하고, 그 메모리의 주소 값 반환. 사용하려면 포인터 형의 변환을 통해 결정해야 함.

형변환 연산자를 사용하여 int * ptr1 = (int *)malloc(sizeof(int)); 이런 식으로 형변환을 해줘야 할당된 메모리 공간에 접근 가능.


힙 영역의 메모리 공간 할당 함수 : calloc 함수 (메모리 공간 해제시 free)

1
2
3
#include <stdlib.h>
 
void * calloc (size_t elt_count, size_t elt_size);


성공 시 할당된 메모리의 주소값, 실패 시 NULL 반환

elt_count 인자 : 할당할 블록의 개수 정보

elt_size 인자 : 블록 하나당 바이트 크기의 정보

malloc 함수와 차이점 : malloc는 할당된 메모리 공간을 별도의 값으로 초기화하지 않음(할당된 메모리 공간이 쓰레기 값으로 채워짐), calloc는 할당된 메모리 공간의 모든 비트를 0으로 초기화 시킴.


힙에 할당된 메모리 공간 확장 시 호출하는 realloc 함수

할당된 메모리 공간은 크기를 확장할 수 없지만, 그 영역이 heap이라면 가능하다.

1
2
3
#include <stdio.h>
 
void * realloc (void * ptr, size_t size);


성공 시 새로 할당된 메모리의 주소 값, 실패 시 NULL 반환

ptr : 확장하고자 하는 힙 메모리의 시작 주소 값

size : 확장하고자 하는 메모리의 전체 크기

1. malloc 함수의 반환 값(주소값)과 realloc 함수의 반환 값이 같은 경우

=> 기존에 할당된 메모리 공간의 뒤를 이어서 확장할 영역이 넉넉한 경우

2. malloc 함수의 반환 값과 realloc 함수의 반환 값이 다른 경우

=> 넉넉하지 않은 경우 힙의 다른 위치에 새로 할당(이전 배열에 저장된 값 복사)

'언어 > C' 카테고리의 다른 글

typedef  (0) 2016.05.02
static 변수  (0) 2016.03.21
파일 입출력 -3  (0) 2016.03.18
파일 입출력 -2  (0) 2016.03.13
파일 입출력 -1  (0) 2016.03.10
Posted by 知彼知己百戰不殆
,

파일 입출력 -3

언어/C 2016. 3. 18. 00:45

텍스트와 바이너리 데이터의 집합체인 구조체 변수의 입출력

⇒ 구조체 변수를 하나의 바이너리 데이터로 인식하고 처리

ex)

fp=fopen("friend.bin", "wb");

printf("이름, 성별, 나이 순 입력: ");

scanf("%s %c %d", myfren1.name, &(myfren1.sex), &(myfren1.age));

fwrite((void *)&myfren1, sizeof(myfren1), 1, fp);

fclose(fp);


fp=fopen(~~~);

fread((void*)&myfren2, sizeof(myfren2), 1, fp);

printf("%s %c %d \n", myfren2.name, myfren2.sex, myfren2.age);

fclose(fp);


파일 위치 지시자 : 파일이 처음 개방되면 무조건 파일의 맨 앞부분 가리킴

1
2
3
#include <stdio.h>
 
int fseek(FILE * stream, long offset, int wherefrom);


파일 위치 지시자의 이동 : seek (stream으로 전달된 파일 위치 지시자를 wherefrom에서부터 offset 바이트만큼 이동)ㅁ

성공시 0, 실패시 0이 아닌 값 반환

 매개변수 wherefrom 이...

파일 위치 지시자는... 

SEEK_SET(0) 이라면

파일 맨 앞에서부터 이동을 시작 

SEEK_CUR(1) 이라면

현재 위치에서부터 이동을 시작

SEEK_END(2) 이라면

파일 맨 끝에서부터 이동을 시작

파일의 맨 끝은 마지막 데이터가 아니라 EOF를 의미

매개변수 offset에 양의 정수 전달 : 파일의 마지막을 향해서 파일 위치 지시자 이동

음의 정수 전달 : 파일의 시작 위치를 향해서 파일 위치 지시자 이동


현재 파일 위치 지시자의 위치 : ftell

1
2
3
#include <stdio.h>
 
long ftell(FILE * stream);


가장 앞 부분의 바이트 위치를 0으로 간주


'언어 > C' 카테고리의 다른 글

static 변수  (0) 2016.03.21
메모리 관리와 메모리의 동적 할당  (0) 2016.03.20
파일 입출력 -2  (0) 2016.03.13
파일 입출력 -1  (0) 2016.03.10
구조체 기초 (열거형 enum)  (0) 2016.03.10
Posted by 知彼知己百戰不殆
,