달력

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

댓글을 달아 주세요


 

실수

·         소수부나 지수부가 있는 수를 가리킵니다.

·         소수점을 가진 숫자를 표현합니다.

·         정수보다 훨씬 넓은 표현 범위를 가집니다.

·         정수 표현방식보다 중요합니다.

·         실수는 오차 동반

 

 

 

실수 표현

실수 표현의 문제점

·         0 1사이의 실수만 해도 수가 무한대

·         단순히 바이트 정도로 모든 실수를 표현하는 것은 불가능합니다.

 

 

문제점에 대한 해결책

정확도를 포기하고, 대신에 표현할 있는 값의 범위를 넓히고 근사값을 사용합니다.

 

 

0 1 통한 정수와 실수 표현


1.1 1.2사이에도 무한 대의 실수값이 존재하므로 0 1로는 정확한 실수값을 표현할 없는 한계 있습니다.

실수를 표현하기 위한 한계를 해결하기 위해 근사치를 사용하게 됩니다.

실수형 데이터의 오차는 자바뿐만 아니라 모든 프로그래밍 언어에서 발생하는 공통된 문제입니다.

 

 

 

 

 

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

댓글을 달아 주세요

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

댓글을 달아 주세요