정성훈
    bit_shift.c (추가)
프로그래밍언어 minus_shift.png [27 KB]    




아래 프로그램을 수행하면 결과가 이미지 처럼 -18과 -5가 나온다.

이유를 생각해보자.

1
2
3
4
5
6
7
8
9
10
11
#include <stdio.h>
 
int main(void)
{
    int x = -9;               
 
    printf("%d << 1 = %d\n", x, x << 1);        
    printf("%d >> 1 = %d\n", x, x >> 1);        
 
    return 0;
}
cs

 

  • -9를 8비트로 표현하면 1111 0111  // 음수는 2의 보수로 표현됨
    • 왼쪽으로 1비트 이동하면 1110 1110 
    • 이 수는 음수임으로 -이고
    • 원래의 크기를 알려면 2의보수를 취하면 됨
      • 1의보수: 0001 0001
      • 2의보수: 0001 0010  ==> 16자리와 2의 자리가 1임으로 18
    • 결국 -18

 

  • 오른쪽으로 1비트 이동하면 11111011
  • 이 수는 음수임으로 -이고
  • 원래의 크기를 알려면 2의보수를 취하면 됨
    • 1의 보수: 0000 0100
    • 2의 보수: 0000 0101 ==> 4의 자리와 1의 자리가 1임으로 5
  • 결국 -5

 

  등록일 : 2022-03-17 [19:14] 조회 : 1582 다운 : 89   
 
△ 이전글도전문제 2)
▽ 다음글도전문제 1)
프로그래밍언어 실습게시판
번호 제 목 조회 등록일
Mini Project (어드벤처 게임 만들기) 추가 구현 // ★★★ 기말과제 게임구현 시 참고
실습 목차
78 └❶ lcondition.c (교재) 1351 02-22
77 └❶ lif_else3.c (교재) 1422 02-21
76 └❶ lif_else2.c (교재) 1492 02-21
75 └❶ lif_else1.c (교재) 1400 02-21
74 (4장) 수식과 연산자 960 02-21
73 └❶ Mini Project (복리 계산) 1118 03-14
72    └❷ Mini Project (복리 계산) (모범 답안) 1338 03-14
71 └❶ 추가 도전 문제 (BMI 계산기) 173 04-04
70    └❷ 추가 도전 문제 (BMI 계산기) (모범 답안) 162 04-04
69 └❶ 도전문제 2) 1164 03-14
68    └❷ 도전문제 2) (모범 답안) 1280 03-14
67 └❶ 도전문제 1) 986 03-14
66    └❷ 도전문제 1) (모범 답안) 1306 03-14
65 └❶ lcal_quad_eq.c (교재) 1449 02-21
64 └❶ ltypecast.c (교재) 1405 02-21
63 └❶ lprec.c (교재) 1524 02-21
62 └❶ lbit_operator.c (교재) 1534 02-21
61 └❶ lbit_shift.c (교재) 1543 02-21
60    └❷ bit_shift.c (추가) 1582 03-17
59 └❶ lbit_op.c (교재) 1538 02-21

[1] [Prev]-[11][12][13][14]