달력

12

« 2019/12 »

  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  •  
  •  
  •  
  •  


 

비트 연산자(bitwise operator)

·       Bit Operator

·       피연산자 연산의 대상이 되는 값들을 내부적으로 bit(비트)단위 변경한 연산을 수행하는 연산자입니다.

·       논리 연산자와 비슷하지만, 비트(bit) 단위로 논리 연산을 수행합니다.

·       0 1 자리에 대한 연산을 수행하며, 0 또는 1 결괏값을 가진다.

·       하드웨어와 관련된 처리를 쉽게 해줍니다.

·       메모리 공간을 줄여서 성능을 높여 있습니다.

 

 

 

'Development > C/C++' 카테고리의 다른 글

C  (0) 2019.05.29
반복문  (0) 2019.05.28
비트 연산자(bitwise operator)  (0) 2019.05.28
비트(Bit)  (0) 2019.05.27
바이트(byte)  (0) 2019.05.27
fread( ) 함수와 fwrite( ) 함수 - 바이너리 파일 입출력  (0) 2019.05.26
Posted by codedragon codedragon

댓글을 달아 주세요

 

 

 

진법(Base)

·        radix

·       수의 표현에 사용될 있는 숫자기호의 개수와 자리수를 의미합니다.

·       위치에 대한 값을 정의해주는 수의 체계입니다.

 

 

http://bit.ly/2ykKXZM

http://bit.ly/2ErL3Ex

http://bit.ly/2PzHxJf

 

 

 

2진수, 10진수, 16진수, 8진수

진수

설명

표현법

10진수

10진법

0~9까지의 숫자를 사용

 

10

일상적인 표현법

2진수

2진법

0, 1 개의  숫자를 사용

 

0000 1010

컴퓨팅 표현법

8진수

8진법

0~7까지의 숫자를 사용

2진수 3자리 8진수 한자리로 표현

 

012

컴퓨팅 표현법

16진수

16진법

0~9까지의 숫자를 사용하고, 9 이후부터 a, b, c, d, e, f 문자 사용

2진수 4자리를 16진수 한자리로 표현

 

0xa

컴퓨팅 표현법

 


 

 

2진수, 10진수, 16진수, 8진수 데이터 표현 방법

2진수

10진수

16진수   

8진수

0000 0000

0

0x0

00

0000 0001

1

0x1

01

0000 0010

2

0x2

02

0000 0011

3

0x3

03

0000 0100

4

0x4

04

0000 0101

5

0x5

05

0000 0110

6

0x6

06

0000 0111

7

0x7

07

0000 1000

8

0x8

010

0000 1001

9

0x9

011

0000 1010

10

0xa

012

0000 1011

11

0xb

013

0000 1100

12

0xc

014

0000 1101

13

0xd

015

0000 1110

14

0xe

016

0000 1111

15

0xf

017

0001 0000

16

0x10

020

0001 0001

17

0x11

021

 

10 == 0xa == 012

17 == 0x11 == 021

 

 

 

 

2진수를 10진수로 표현하는 방법

 

00001101 10진수로 변환하기


 


 

 

2진수

10진수

2진수

10진수

2진수

10진수

0000 0000

 

0000 0110

 

0000 1100

 

0000 0001

 

0000 0111

 

0000 1101

 

0000 0010

 

0000 1000

 

0000 1110

 

0000 0011

 

0000 1001

 

0000 1111

 

0000 0100

 

0000 1010

 

0001 0000

 

0000 0101

 

0000 1011

 

0001 0001

 

 

 

2진수를 8진수와 16진수로 표현하는 방법



2진수

00000101 00001101 01010111 01001101

8진수

02505253515

16진수

050d574d

 

 

 

 

13 -13 변환

양수를 음수로 변환시

1 보수를 구한 다음 1 더해주면 음수값이 됩니다.

 

음수에서 양수로 변환시

1의보수를 구한다음 1 더해주면 양수값이 나옵니다.


 

MSB(Most Significant Bit): 부호비트

 

Posted by codedragon codedragon

댓글을 달아 주세요


 

변수(Variable)

http://codedragon.tistory.com/6641

 

 

 

C - 변수의 종류

구분

표현형 종류

정수형 변수

char, short, int, long

실수형 변수

float, double, long double

 

 

 

Posted by codedragon codedragon

댓글을 달아 주세요


 

형변환

타입의 데이터가 다른 타입으로 변환하는 형변환, 자료형 변환, 타입 변환이라고 합니다.

타입 변환은 크게 자동 타입 변환과 강제 타입 변환으로 구분됩니다.

 

 

 

자료형 변환의 종류

자동 형변환

컴파일러가 자동 형변환 시킵니다

강제 형변환

프로그래머가 강제 형변환 시킵니다

 

 

 

자동 형변환

·       다른 자료형 산술 연산의 경우에 작은 자료형에서 자료형으로 자동 형변환

 

 

정수 + 실수 또는 실수 + 정수와 같은 산술 연산을 하는 경우 자동 형변환

#include <stdio.h>

int main(void)

{

   int       num1=100;        // 정수

   double num2=3.14;        // 실수

   printf("%lf \n", num1+num2);    // 정수 + 실수

   return 0;

}

 

 

자료형 변환 우선순위 (작은 자료형에서 자료형으로…) 자동 형변환

char < int < long < float < double < long double

 



 

대입 연산자를 기준으로 오른쪽에서 왼쪽으로 자동 형변환

#include <stdio.h>

int main(void)

{

   char     num1=130;

   int       num2=3.14;

   double num3=3;

   printf("%d, %d, %lf \n", num1, num2, num3);

   return 0;

}

 

 

Posted by codedragon codedragon

댓글을 달아 주세요



 

상수(constant)

·         어떤 상황에서도 변하지 않는 의미합니다.

·         한번 값이 결정되면 프로세스가 종료될 때까지 값을 변경할 없습니다.

·         프로그램에서 데이터는 변수 또는 상수의 형태로 사용합니다.

·         동일한 상수를 여러 사용할 경우에는 자체를 직접 표현하지않고, 상수를 선언하여 대신에 이름(상수명) 사용할 있습니다.

 

 

 

상수 사용시 장점

·         가독성 향상

·         수정 용이

·         오류 방지

 

 

 


Posted by codedragon codedragon

댓글을 달아 주세요

   

typedef 키워드 사용

typedef 사용하는 이유는 가독성을 높여주기 위해 사용하는 경우가 많습니다.

   

   

소스코드

   

#include <stdio.h>

typedef int cash; //int자료형을 cash라는 이름으로 재정의 사용하겠다는 의미

int main(void) {

cash num1=1000;

cash num2=10000;

cash num3=5000;

int num4=2000;

cash total=0;

total=num1+num2+num3+num4;

printf("total amount : %d won \n", total);

return 0;

}


   

   

출력결과

 

Posted by codedragon codedragon

댓글을 달아 주세요


강제 형변환 필요성

정수를 정수 나눌 경우 데이터 손실이 발생

   

   

   

소스코드

   

#include <stdio.h>

int main(void) {

int num1=10; //정수

int num2=3; //정수

double result; //실수

//정수형/정수형 -> 자동형변환에 의해 연산결과인 3.333 값에서 정수값만 result 저장됩니다.

result=num1/num2; //3 = 10/3 (3.333....)

printf("결과1 : %lf \n", result); //데이터 손실 발생

result=(double)num1/num2; //강제 형변환, 실수형/정수형

printf("결과2 : %lf \n", result);

result=num1/(double)num2; //강제 형변환, 정수형/실수형

printf("결과3 : %lf \n", result);

result=(double)num1/(double)num2; //강제 형변환, 실수형/실수형

printf("결과4 : %lf \n", result);

return 0;

}


   

   

출력결과

   

Posted by codedragon codedragon

댓글을 달아 주세요

   

자동 형변환(대입 연산자)

대입 연산자를 기준으로 오른쪽에서 왼쪽으로 자동 형변환

   

   

소스코드

   

#include <stdio.h>

int main(void) {

//문자형(작은 자료형) = int( 자료형)

//127까지 표현범위인데 130이므로 오버플로우 발생한 값을 다시 문자형으로 저장

char num1=130; //데이터 오버플로우 발생

//정수(작은 자료형) = 실수(큰자료형)

int num2=3.14; //데이터 손실

//실수( 자료형) = 정수(작은 자료형)

double num3=5; //데이터 손실 없음

printf("%d, %d, %lf \n", num1, num2, num3);

return 0;

}


   

   

출력결과

   

   

Posted by codedragon codedragon

댓글을 달아 주세요

자동 형변환 (산술연산)

다른 자료형 간 산술 연산의 경우에 작은 자료형에서 큰 자료형으로 자동 형변환

   

   

소스코드

   

#include <stdio.h>

int main(void) {

int num1=100; // 정수

double num2=3.14; // 실수

//작은 자료형에서 자료형으로 자동 형변환

printf("%lf \n", num1+num2); // 정수 + 실수

printf("%lf \n", num1/num2); // 정수 + 실수

//2째자리까지 출력

printf("%.2lf \n", num1+num2); // 정수 + 실수

return 0;

}


   

   

출력결과

   

Posted by codedragon codedragon

댓글을 달아 주세요

   

알파벳을 입력하면 ASCII코드 값을 출력하고 ASCII코드 값을 입력하면 문자 출력하기

   

   

소스코드

   

#include <stdio.h>

int main(void) {

char val1;

int val2;

printf("문자 입력 > ");

fflush(stdout);

scanf("%c", &val1);

printf("ASCII 코드 : %d \n", val1);

printf("ASCII 코드 입력 > ");

fflush(stdout);

scanf("%d", &val2);

printf("문자: %c\n", val2);

return 0;

}


   

   

출력결과

 

Posted by codedragon codedragon

댓글을 달아 주세요