달력

12

« 2019/12 »

  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 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

댓글을 달아 주세요


 

형변환

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

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

 

 

 

자료형 변환의 종류

자동 형변환

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

강제 형변환

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

 

 

 

자동 형변환

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

 

 

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

#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

댓글을 달아 주세요

   

   

자바의 자동 형변환 규칙(Implict Conversion)

값의 표현 범위로 자동 형변환됩니다.


   

 

double num = 3.14f + 10;

//10 10F 자동 형변환

 


Posted by codedragon codedragon

댓글을 달아 주세요


 

문자 자료형 char

·       문자표현을 위한 문자셋으로 자바에서는 유니코드 기반으로 표현하게 됩니다.(문자 하나를 2바이트로 표현하는 유니코드 기반으로 표현)

·       유니코드(unicode)전 세계의 문자를 표현할 수 있는 코드 집합입니다.

·       문자는 작은 따옴표(')로 표현합니다.

·       문자는 char형 변수에 저장되고 저장 시 실제로는 유니코드 값으로 저장됩니다.

 

 

char ch1 = '';

char ch2 = 'A';

 

 

유니코드는 문자 하나를 16비트로 표현하므로, 65,536개의 문자를 표현할 수 있습니다.

자료형

키워드

크기

기본값

표현 범위

문자형

char

2byte

\u0000

0~216

 

0~65,535

 

 

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

댓글을 달아 주세요

양수/음수에서 비트단위 이동 연산 수행

   

   

   

소스코드

   

#include <stdio.h>

int main(void)

{

int num1=10;

//00001010

int num2=-10;

//11110101 (1의보수)

//11110110 (1 더함) //-10

int result1;

int result2;

result1 = num1 >> 1;

//00000101

//양수인경우 0으로 채움

result2 = num2 >> 1;

//11111011 //-5

//음수인경우 1 채움

//오른쪽으로 1비트씩 이동할 마다 2 나누어집니다.

//11111011 //-5

//00000100 (1의보수)

//00000101 (1 더함) //5

printf("비트단위 >> 연산 결과: %d \n",result1); //5

printf("비트단위 >> 연산 결과: %d \n",result2); //-5

return 0;

}


   

   

출력결과

 

Posted by codedragon codedragon

댓글을 달아 주세요

비트단위 << 연산, 비트단위 >> 연산

   

   

소스코드

int main(void) {

int num1=10;

// 00001010

int result1;

result1 = num1 << 2;

// 0 0 1 0 1 0 0 0

//왼쪽 시프트시 남은 공간은 0으로 채웁니다.

//왼쪽으로 1비트씩 이동할 마다 2 곱해집니다.

printf("비트단위 << 연산 결과: %d \n", result1); //결과 40

return 0;

}


   

 

출력결과


 

Posted by codedragon codedragon

댓글을 달아 주세요

비트연산자

비트 단위 AND 연산, 비트 단위 OR 연산, 비트 단위 XOR 연산, 비트 단위 NOT 연산

 


&연산자 vs 주소연산자

피연산자사이의 &

&연산자

변수앞의 &

주소연산자

   

   

소스코드

   

#include <stdio.h>

int main(void) {

int a=12;

// 128 64 32 16 8 4 2 1

// 0 0 0 0 1 1 0 0

int b=20;

// 128 64 32 16 8 4 2 1

// 0 0 0 1 0 1 0 0

int result1, result2, result3, result4;

result1 = a & b;

// 128 64 32 16 8 4 2 1

// 0 0 0 0 1 1 0 0

// 0 0 0 1 0 1 0 0

//----------------------

// 0 0 0 0 0 1 0 0

printf("a: %d \n", a);

printf("b: %d \n", b);

printf("비트단위 & 연산 결과: %d \n\n",result1); // 결과 4

result2 = a | b;

// 128 64 32 16 8 4 2 1

// 0 0 0 0 1 1 0 0

// 0 0 0 1 0 1 0 0

//----------------------

// 0 0 0 1 1 1 0 0

printf("a: %d \n", a);

printf("b: %d \n", b);

printf("비트단위 | 연산 결과: %d \n\n",result2); // 결과 28

result3 = a ^ b;

// 1 2 결과

// 0 0 0

// 1 0 1

// 0 1 1

// 1 1 0

printf("a: %d \n", a);

printf("b: %d \n", b);

printf("비트단위 ^ 연산 결과: %d \n\n",result3); // 결과 24

//~ 연산자

result4 = ~ a;

// 128 64 32 16 8 4 2 1

// 0 0 0 0 1 1 0 0

// 1 1 1 1 0 0 1 0

printf("a: %d \n", a);

printf("비트단위 ~ 연산 결과: %d \n",result4); // 결과는

return 0;

}


   

   

출력결과

   

Posted by codedragon codedragon

댓글을 달아 주세요

   

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

진수

설명

표현법

2진수

0~1까지의 숫자를 사용

컴퓨팅 표현법

10진수

0~9까지의 숫자를 사용

일상적인 표현법

16진수

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

컴퓨팅 표현법

8진수

0~7까지의 숫자를 사용

컴퓨팅 표현법

   

   

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을 더해주면 양수값이 나옵니다.

   

Posted by codedragon codedragon

댓글을 달아 주세요

2015. 3. 19. 18:52

비트 (bit) Development/C/C++

   

   

비트

  • 컴퓨터는 모든 정보를 0과 1로 표현
  • 비트(Bit)는 2진수 값 하나(0 또는 1)를 저장할 수 있는 최소 메모리 공간
  • 1바이트(byte)는 8비트(bit)

1bit

2bit

3bit

4bit

5bit

6bit

7bit

8bit

9bit

nbit

21 = 2

22 = 4

23 =8

24 = 16

25 =32

26 = 64

27 = 128

28 = 256

29 = 512

2n =n

   

  

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

Ex12-비트연산자  (0) 2015.03.23
2진수, 10진수, 16진수, 8진수 데이터 표현방법  (0) 2015.03.21
비트 (bit)  (0) 2015.03.19
Ex11-조건연산자  (0) 2015.03.17
Ex10-논리연산자(&&연산자, || 연산자, ! 연산자)  (0) 2015.03.15
논리연산자  (0) 2015.03.14
Posted by codedragon codedragon

댓글을 달아 주세요