'Programming'에 해당되는 글 25건
- 2011.10.12 printf 출력 서식
- 2011.10.07 아스키(ASCII, American Standard Code for Information Interchange)
- 2011.09.08 The GNU C Library Reference Manual
- 2011.09.08 The C Library Reference Guide
- 2011.07.29 비트 제어 - 설정, 클리어, 반전, 검사, 추출
- 2011.07.07 다시 체계적으로 배우는 C언어 포인터
- 2010.07.31 ◎ 자료형 확인과 기타의 자료형
- 2010.07.31 ◎ 내장 자료형의 분류
"%[parameter][flags][width][.precision][length]type"
Parameter
Character |
Description |
n$ |
파라미터 지정 This is a POSIX extension and not in C99. Example: printf("%2$d %1$#x %1$d",16,17) produces "17 0x10 16" |
Flags
Character |
Description |
+ |
양수 '+', 음수 '-' 기호 출력. (디폴트 : 아무것도 표시 안함) |
- |
좌측 정렬 |
# |
8진수, 16진수 출력시 각각 0과 0x를, 실수의 경우 소수점 이하 0을 출력 |
' '공백 |
출력할 크기가 0보다 클 때 수의 앞에 빈 칸 하나 출력 |
0 |
빈공간을 0으로 체움 |
Width
Character |
Description |
* or N |
폭 지정 (*와 같은 경우 숫자와 대응) Example: printf("%*d", 5, 10) will result in " 10" being printed with a width of 5. |
Precision
Character |
Description |
* or N |
정밀도 지정 (*와 같은 경우 숫자와 대응) 정수의 경우-> 지정한 숫자보다 개수가 작을 경우 나머지 0으로 표시 실수의 경우-> 소수점 자리 수 문자열의 경우-> 지정한 개수만큼의 문자 표시 Example: printf("%.*s", 3, "abcdef") will result in "abc" being printed. |
Length
Character |
Description |
h |
정수 자료형 감소 (int-> short) |
hh |
정수 자료형 2번 감소 (int-> short-> char) |
l |
정수 자료형 증가(int-> long) |
ll |
정수 자료형 2번 증가(int-> long-> long long) |
L |
실수 자료형 증가 (long -> long double) |
z |
For integer types, causes printf to expect a size_t sized integer argument. |
j |
For integer types, causes printf to expect a intmax_t sized integer argument. |
t |
For integer types, causes printf to expect a ptrdiff_t sized integer argument. |
Type
Character |
Type |
Description |
d, i |
int |
부호 있는 10진수 정수 |
u |
unsigned int |
부호 없는 10진수 정수 |
o |
unsigned int |
부호 없는 8 진수 정수 |
x, X |
unsigned int |
부호 없는 16진수 정수 |
f, F |
double |
10진수 방식의 부동 소수점 실수 |
e, E |
double |
지수 형식으로 출력 |
g, G |
double |
%e와 %f 중 짧은 쪽, 소수점에 이어지는 0은 생략 |
c |
int |
값에 대응하는 문자 |
s |
char * |
문자열 |
p |
void * |
포인터 주소값 |
n |
int * |
포인터 주소값 |
% |
literal '%' |
리터럴 '%' 문자( 플래그, 폭, 정밀, 길이 허용 안함) |
'Programming > C' 카테고리의 다른 글
The GNU C Library Reference Manual (0) | 2011.09.08 |
---|---|
The C Library Reference Guide (0) | 2011.09.08 |
비트 제어 - 설정, 클리어, 반전, 검사, 추출 (0) | 2011.07.29 |
다시 체계적으로 배우는 C언어 포인터 (0) | 2011.07.07 |
연산자 우선순위 (0) | 2010.05.05 |
ASCII 코드는 미국에서 표준화한 데이터 처리 및 통신시스템 상호간의 정보교환용 표준 부호체계를 의미한다.
이 당시 문자(Character)를 표현 하는데 7bit를 1byte로 사용하였고,
이후 메모리의 구조가 변화됨에 따라 8bit를 1byte로 구성하게 되었다.
ASCII 코드는 모두 256(개의 부호를 두 개의 집합, 즉 표준 집합(standard set)과 확장 집합(extended set)으로 구분.
표준 집합 : 십진수 0~127(16진수 0x00~0x7f)가지 128개 문자 부호 제공.
(제어문자, 알파벳 대문자와 소문자, '0'~'9'까지의 숫자 그리고 일반적으로 사용되는 특수 기호로 구성)
확장 집합 : 십진수 128~255(16진수 0x80~0xff)가지 128개 문자 부호를 추가로 제공.
(컴퓨터 업체나 프로그래머로 하여금 여러 다양한 문자를 할당하여 사용할 수 있도록 하였기 때문에 일반적으로
통용되는 코드 집합이 아니며 컴퓨터 제조 회사나 국가별로 차이가 있다)
※ 제어 문자(control characters) : 0부터 ~ 31까지(16진수로 0x00 ~ 0x1f)는
TAB, CR(Carriage Return), LE(line Feed)등의 제어 문자를 표현하기 위한 용도.
※ 출력 가능한 문자(printable characters) : 32부터 ~ 126까지 출력으로 확인 가능한(Printable)문자들로 구성.
Standard ASCII Codes
Extended ASCII Codes
'Programming > C' 카테고리의 다른 글
printf 출력 서식 (0) | 2011.10.12 |
---|---|
The C Library Reference Guide (0) | 2011.09.08 |
비트 제어 - 설정, 클리어, 반전, 검사, 추출 (0) | 2011.07.29 |
다시 체계적으로 배우는 C언어 포인터 (0) | 2011.07.07 |
연산자 우선순위 (0) | 2010.05.05 |
'Programming > C' 카테고리의 다른 글
printf 출력 서식 (0) | 2011.10.12 |
---|---|
The GNU C Library Reference Manual (0) | 2011.09.08 |
비트 제어 - 설정, 클리어, 반전, 검사, 추출 (0) | 2011.07.29 |
다시 체계적으로 배우는 C언어 포인터 (0) | 2011.07.07 |
연산자 우선순위 (0) | 2010.05.05 |
[ 비트 설정 ] |
||||||||||||
▶ 특정 비트를 1로 설정 : 1과 |(or)연산. ▷ 5번 비트를 1로 설정>
위의 연산을 코드화 : a |= 0x00100000; ▷ 위의 0x001_0000은 0x1(0x000_0001)을 5번 쉬프트한 값과 같다. a |= 0x1 << 5;
▷ 5,3,2번 비트를 1로 설정>
위의 연산을 코드화 : a |= (0x1<<5)+(0x1<<3)+(0x1<<2); ▷ 3,2번 비트는 연속된 비트이기 때문에 0x3으로 묶어줄 수 있다. a |= (0x1<<5)+(0x3<<2); |
[ 비트 클리어 ] |
||||||||||||||||
▶ 특정 비트 클리어 : 0과 &연산. ▷ 1을 원하는 위치로 쉬프트하고 그 값에 대해 ~(NOT)연산을 해서 0으로 만듬. (0x0000, 0x0도 모두 0이기 때문에 0으로 자릿수를 표현할 수 없음)
▷ 2번 비트를 0으로 클리어>
위의 연산 코드화 : a &= ~(0x1<<2);
▷ 5,3,2번 비트 클리어>
위의 연산 코드화 : a &= ~((0x1<<5)+(0x3<<2)); |
[ 비트 반전 ] |
||||||||||||
▶ 특정 비트 반전 : 1과 ^연산. ( ^연산은 두 피연산자가 같으면 0, 다르면 1로 설정) ▷ 5번 비트 반전 >
위의 연산 코드화 : a ^= 0x1<<5
▷ 5,3,2번 비트 반전 >
위의 연산 코드화 : a ^= (0x1<<5)+(0x3<<2); |
[ 비트 검사 ] |
▶ 특정 비트가 0인지 1인지 검사. ▷ 5번째 비트가 0인지 1인지 검사 : a & (0x1 << 5) |
[ 비트 추출 ] |
▶ 특정 비트만 추출. ▷ [6:4] 비트만 추출하고 싶다면 : (a>>4) & 0x7 |
[ bit_macro.h ]
/* 한 비트 클리어 */ #define clear_bit(data, loc) ((data) &= ~(0x1 << (loc))) /* 연속된 여러 비트 클리어 */ #define clear_bits(data, area, loc) ((data) &= ~((area) << (loc))) /* 한 비트 설정 */ #define set_bit(data, loc) ((data) |= (0x1 << (loc))) /* 연속된 여러 비트 설정 */ #define set_bits(data, area, loc) ((data) |= ((area) << (loc))) /* 한 비트 반전 */ #define invert_bit(data, loc) ((data) ^= (0x1 << (loc))) /* 연속된 여러 비트 반전 */ #define invert_bits(data, area, loc) ((data) ^= ((area) << (loc))) /* 비트 검사 */ #define check_bit(data, loc) ((data) & (0x1 << (loc))) /* 비트 추출 */ #define extract_bits(data, area, loc) (((data) >> (loc)) & (area))
[ bit_test.c ]
#include <stdio.h> #include "bit_macro.h" void bitdisp(int c) { int i; for (i=7; i>=0; i--) printf("%1d", check_bit(c, i)? 1:0); putchar('\n'); } int main(void) { unsigned char a = 0xf0; // 11110000(₂) unsigned char b; printf("a 2진수로 출력 : "); bitdisp(a); puts("------------------------------------");
clear_bit(a, 5); /* 5번 비트 클리어 */ printf("5번 비트 클리어 : "); bitdisp(a); clear_bits(a, 0x7, 3); /* 5,4,3번의 연속 3비트 클리어 */ printf("5,4,3번 비트 클리어 : "); bitdisp(a); putchar('\n'); set_bit(a, 5); /* 5번 비트 설정 */ printf("5번 비트 설정 : "); bitdisp(a); set_bits(a, 0x7, 3); /* 5,4,3번 연속 비트 설정 */ printf("5,4,3번 비트 설정 : "); bitdisp(a); putchar('\n'); invert_bit(a, 5); /* 5번 비트 반전 */ printf("5번 비트 반전 : "); bitdisp(a); invert_bits(a, 0x7, 3); /* 5,4,3번 연속 비트 반전 */ printf("5,4,3번 비트 반전 : "); bitdisp(a); putchar('\n'); b = extract_bits(a, 0x7, 4); /* 6,5,4번 비트를 추출하여 b에 대입 */ printf("6,5,4번 비트 추출 : "); bitdisp(b); return 0; }
'Programming > C' 카테고리의 다른 글
The GNU C Library Reference Manual (0) | 2011.09.08 |
---|---|
The C Library Reference Guide (0) | 2011.09.08 |
다시 체계적으로 배우는 C언어 포인터 (0) | 2011.07.07 |
연산자 우선순위 (0) | 2010.05.05 |
매크로 (0) | 2010.05.05 |
|
[ 책소개 ] |
이 책은 포인터와 배열만을 다룬것이 아니라 가벼운 인자, 함수포인터, 함수 인자포인터, 자기 참조 구조체등 C언어의 전반에서 모두 사용되는 포인터를 다루고 있다. 메모리해제에 관한 자세한 해설과 예제등 다양한 실무경험을 통해 터득한 내용들을 쉽게 서술하였다 |
[ 목차 ] |
1 포인터란 무엇인가? 14 2 포인터 변수 15 3 포인터 변수 정의 15 4 쓰레기 주소 값 17 5 & 연산자 18 6 포인터 변수에 번지 할당 20 7 포인터 변수에 왜 타입을 지정하는가? 27
Chapter2 1차원 배열과 포인터 1 1차원 배열과 포인터 32 2 첨자 생략 35 3 다차원 배열 35 4 1차원 배열과 포인터 37 5 포인터 + 정수의 의미 39 6 배열명의 숨은 뜻 44
Chapter3 2차원 배열과 포인터 1 이것만 알면 만사 OK 50 2 기본 50 3 배열 포인터 정의 52 4 2차원 배열과 2차원 배열 포인터 변수 연결 53 5 2차원 배열 기본 다지기 56 6 imsip = imsi 60 7 int imsi[2][3]의 모든 것 61 8 함수 인자 포인터 65 9 2차원 포인터 다루기 66 10 2차원 포인터 이것만은 알아두자 72 11 int (*imsi)[2], int *temp[2]의 차이 81 12 *temp[3]에서 temp의 의미는? 86
Chapter4 문자열과 포인터 1 문자열이란 무엇인가? 92 2 a, 'a', "a"의 차이 92 3 문자열 포인터 변수 94 4 포인터를 이용한 문자열 조작 96 5 착각하기 쉬운 첨자 98 6 *string과 string[ ]의 차이 99 7 문자열 상수 변경 103 8 문자열과 포인터 배열 106 9 포인터 배열에 문자열 할당 109
Chapter5 포인터의 포인터 1 포인터의 포인터는 무엇인가? 118 2 포인터의 포인터 변수 정의 118 3 어디에 사용하는가? 118 4 초기화 119 5 포인터의 포인터 참조 121 6 주의 사항 125 7 주의 사항 하나 더 126 8 명령행 인자 127
Chapter6 scanf( )와 fgets( ) 1 scanf( )와 fgets( ) 132
Chapter7 strcpy( )의 비밀 1 strcpy( )의 함정 140 2 배열을 이용한 strcpy( ) 142 3 포인터 변수를 이용한 strcpy( ) 143 4 배열과 malloc( )을 이용한 번지 할당 146
Chapter8 뒤죽박죽 포인터 1 뒤죽박죽 포인터? 150
Chapter9 포인터의 개념을 깨는 0 1 의문점 154 2 널 포인터 156 3 주의 사항 157 4 널 포인터의 사용처 157
Chapter10 바로 알자 getchar( ) 1 getchar( )의 함정 162
Chapter11 가변 인자 1 가변 인자란? 166 2 가변 인자 사용 단계 167 3 가변 인자를 위한 매크로 168 4 가변 인자의 사용 169 5 주의 사항 171
Chapter12 될 것 같으면서 안 되는 코드 1 초보자들이 무시하는 쓰레기 주소 값 174
Chapter13 (int *)pointer 1 캐스트 연산자의 이해 186
Chapter14 void형 포인터 1 void형 포인터란? 192 2 void형 변수 포인터 정의 193 3 void형 포인터 변수의 성질 193 4 void형 포인터 변수의 사용 193 5 *((int *)voidp)++ 200 6 주의 사항 203
Chapter15 함수 인자 포인터 1 함수 인자 포인터란? 206 2 1차원 함수 인자 포인터 206 3 int형 배열 209 4 문자열 포인터 213 5 1차원 포인터 배열 214 6 2차원 포인터 배열 216
Chapter16 함수 포인터 1 함수 포인터의 매력 224 2 함수 포인터의 정의 224 3 함수 포인터의 초기화 225 4 함수 포인터 호출 225
Chapter17 구조체와 포인터 1 간단한 구조체 개념 230 2 주소록 230 3 구조체 선언과 정의 231 4 구조체 연산 233 5 구조체와 포인터 234 6 멤버 초기화 236 7 주의 사항 237 8 중첩 구조체 240 9 구조체 복사 242 10 매개변수가 구조체 배열인 함수 245 11 자기 참조 구조체 251 12 리스트 262
Chapter18 메모리 할당과 해제 1 동적 메모리 할당 270 2 동적 메모리 할당의 장·단점 272 3 malloc( ) 273 4 가장 간단한 메모리 할당 274 5 동적 메모리 영역 초기화 275 6 할당 가능한 메모리 영역 알아보기 276 7 문자열 포인터 변수를 위한 malloc( ) 277 8 구조체 포인터 변수를 위한 malloc( ) 278 9 calloc( ) 279 10 realloc( ) 281 11 메모리 해제 282 12 간단한 메모리 해제 283 13 리스트의 메모리 해제 283 14 복잡한 메모리 해제 287
Chapter19 라이브러리 1 라이브러리란? 296 2 라이브러리의 특징 298 3 ar 298 4 ar 옵션 (/usr/ccs/bin) 299 5 라이브러리 생성 단계 299 |
'Programming > C' 카테고리의 다른 글
The GNU C Library Reference Manual (0) | 2011.09.08 |
---|---|
The C Library Reference Guide (0) | 2011.09.08 |
비트 제어 - 설정, 클리어, 반전, 검사, 추출 (0) | 2011.07.29 |
연산자 우선순위 (0) | 2010.05.05 |
매크로 (0) | 2010.05.05 |
- 파이썬의 객체 자료형
분야 | 설명 |
NoneType | None 객체 자료형 |
TypeType | type 객체의 자료형(type()으로 리턴되는 자료형) |
BooleanType | 부울 자료형(파이썬 2.3이상) |
IntType | 정수형(예:123) |
LongType | 롱형(예:123L) |
FloatType | 실수(부동소수점)형 (예:12.34) |
ComplexType | 복소수형(예: 1.0j) |
StringType | 문자열형(예: 'Spam') |
UnicodeType | 유니코드 문자열형(예: u'Spam') |
TupleType | 튜플형(예: (1,2,3, 'spam')) |
ListType | 리스트형(예: [0,1,2,3]) |
DictType | 사전형(예: {'Bacon':1, 'Ham':0}) |
DictionaryType | DictType의 또 다른 이름 |
FunctionType | 사용자 정의 함수, 람다 함수형 |
LambdaType | FunctionType의 또 다른 이름 |
CodeType | compile() 함수에 의해 리턴되는 코드 객체형 |
ClassType | 사용자 장의 클래스 자료형 |
InstanceType | 사용자 정의 클래스 인스턴스형 |
MethodType | 사용자 정의 클래스 인스턴스의 메쏘드형 |
UnboundMethodType | MethodType의 또 다른 이름 |
BuiltinFunctionType | len(), sys.exit()와 같은 내장 함수의 이름 |
BuiltinMethodType | BuiltinFunction의 또 다른 이름 |
ModuleType | 모듈형 |
FileType | sys.stdout과 같은 오픈된 파일 객체형 |
XRangeType | xrange()에 의해 리턴된 자료형 |
SliceType | slice()에 의해 리턴된 자료형 |
EllipsisType | Ellipsis 자료형 |
TracebackType | sys.exc_traceback와 같은 traceback 객체형 |
FrameType | traceback 객체 tb안의 tb.tb_frame과 같은 프레임 객체형 |
BufferType | buffer() 함수로 생성된 버퍼 객체형 |
- 기타의 자료형
- 파이썬 전체 자료형의 종류를 알아보려면 모듈 types를 이용
>>> import types >>> dir(types) ['BooleanType', 'BufferType', 'BuiltinFunctionType', 'BuiltinMethodType', 'ClassType', 'CodeType', 'ComplexType', 'DictProxyType', 'DictType', 'DictionaryType', 'EllipsisType', 'FileType', 'FloatType', 'FrameType', 'FunctionType', 'GeneratorType', 'GetSetDescriptorType', 'InstanceType', 'IntType', 'LambdaType', 'ListType', 'LongType', 'MemberDescriptorType', 'MethodType', 'ModuleType', 'NoneType', 'NotImplementedType', 'ObjectType', 'SliceType', 'StringType', 'StringTypes', 'TracebackType', 'TupleType', 'TypeType', 'UnboundMethodType', 'UnicodeType', 'XRangeType', '__builtins__', '__doc__', '__file__', '__name__', '__package__'] |
- types 모듈을 이용하여 자료형 비교
>>> from types import * >>> type(123) == IntType True >>> type('abc') == StringType True |
- 내장 자료형 알아보기
- 자료형이 무슨 형인지 알려면 type 내장 함수를 이용
- type 함수는 자료의 종류를 담고 있는 type 객체를 리턴
>>> type({}) <type 'dict'> >>> type('abc') <type 'str'> >>> type(None) <type 'NoneType'> >>> type([]) <type 'list'> >>> type(()) <type 'tuple'> >>> type(type({})) <type 'type'> # 자료형 비교 예 >>> a = 0 >>> L = [1,2,3] >>> type(a) == type(0) # a가 정수인지 검사 True |
'Programming > Python' 카테고리의 다른 글
파이썬 – os.path 모듈 (2) | 2011.11.20 |
---|---|
파이썬 – 정규식표현식(Regular Expression) 모듈 (8) | 2011.11.20 |
◎ 내장 자료형의 분류 (0) | 2010.07.31 |
◎ 자료형의 종류(문자열,리스트,튜플,사전) (0) | 2010.07.31 |
◎ 콘솔 입 .출력 (0) | 2010.07.30 |
-
주요 내장 자료형
자료형 |
설명 |
예 |
수치형(Numbers) |
정수, 롱형, 실수, 복소스등 표현 |
123, 12345L, 1.43 5+3 |
문자열(Strings) |
문자들의 모임 (내용 변경 X) |
'spams', "ham", "'egg'", """hot dog""" |
리스트(Lists) |
순서를 갖는 파이썬 임의 객체의 집합 |
['ham', 'spam'] |
사전(Dictionaries) |
순서를 갖지 않는 객체의 집합 키(key)로 값을 꺼낸다. |
{'ham':4, 'spam':5} |
튜플(Tuples) |
순서를 갖는 파이썬 임의 객체의 집합 (내용 변경 X) |
('ham', 'spam') |
파일(Files) |
파일에 자료를 입.출력하기 위한 객체 |
f = open('ham') |
-
자료 저장 방법에 따른 자료형의 분류
자료형 |
설명 |
예 |
직접자료형(direct) |
직접 자료를 표현하는 자료형 수치형이 여기에 속함. |
정수, 실수, 롱형정수, 복소수 |
시퀀스형(sequence) |
다른 자료를 포함하는 자료형 (순서를 갖는 집합적 자료형) |
문자열, 리스트, 튜플 |
매핑형(mapping) |
다른 자료를 포함하는 자료형 (순서를 갖지 않는 집합적 자료형) |
사전 |
-
변경 가능성에 따른 자료형의 분류
자료형 |
설명 |
예 |
변경가능형(mutable) |
자료의 값을 변경(O) |
리스트, 사전 |
변경불가능(immutable) |
자료의 값을 변경(X) |
문자열, 튜플, 수치형 |
-
자료 저장 개수에 따른 자료형의 분류
자료형 |
설명 |
예 |
리터럴형(literal/scalar) |
한 가지 객체만 저장. |
수치형, 문자열 |
저장형(container) |
여러 가지 다른 객체를 저장 |
리스트, 튜플, 사전 |
-
자료형의 분류
자료형 |
저장모델 |
변경 가능성 |
접근 방법 |
수치형 |
리터럴 |
불가 |
직접 |
문자열 |
리터럴 |
불가 |
시퀀스 |
리스트 |
저장형 |
가능 |
시퀀스 |
튜플 |
저장형 |
불가 |
시퀀스 |
사전 |
저장형 |
가능 |
매핑 |
-
자료형들을 구분하는 또 다른 중요한 구분 기준
(1) '변경 가능하다'(mutable) – 리스트, 사전
>>> s = [1,2,3] >>> s[1] = 200 >>> s [1, 200, 3] |
(2)'변경 가능하지 않다'(immutable) – 수치형, 문자열, 튜플
>>> s = (1,2,3) >>> s[1] = 20 Traceback (most recent call last): File "<pyshell#6>", line 1, in <module> s[1] = 20 TypeError: 'tuple' object does not support item assignment |
'Programming > Python' 카테고리의 다른 글
파이썬 – 정규식표현식(Regular Expression) 모듈 (8) | 2011.11.20 |
---|---|
◎ 자료형 확인과 기타의 자료형 (0) | 2010.07.31 |
◎ 자료형의 종류(문자열,리스트,튜플,사전) (0) | 2010.07.31 |
◎ 콘솔 입 .출력 (0) | 2010.07.30 |
◎ 문자열로 된 파이썬 코드 실행하기 (0) | 2010.07.30 |