정성훈
    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] 조회 : 1800 다운 : 98   
 
△ 이전글bit_shift.c (교재)
▽ 다음글bit_op.c (교재)
프로그래밍언어 실습게시판
번호 제 목 조회 등록일
Mini Project (어드벤처 게임 만들기) 추가 구현 // ★★★ 기말과제 게임구현 시 참고
실습 목차
61 └❶ lbit_shift.c (교재) 1780 02-21
60    └❷ bit_shift.c (추가) 1800 03-17
59 └❶ lbit_op.c (교재) 1749 02-21
58    └❷ bit_op.c (학생 풀이) 컴퓨터에서 음수 표현 780 03-20
57       └❸ bit_op.c (학생 풀이) 컴퓨터에서 음수 표현 (모범 답안) 1392 03-20
56 └❶ lrelational.c (교재) 1533 02-21
55 └❶ lcomp_op.c (교재) 1866 02-21
54 └❶ lbending.c (교재) 1716 02-21
53 └❶ ldays.c (교재) 1635 02-21
52 └❶ lincdec.c (교재) 1563 02-21
51 └❶ lmodulo.c (교재) 1589 02-21
50    └❷ modulo.c (학생 풀이) 시/분/초로 변환 766 03-17
49       └❸ modulo.c (추가) (모범 답안) 1274 03-17
48 └❶ larithmetic2.c (교재) 1365 02-21
47 └❶ larithmetic1.c (교재) 1524 02-21
46 (3장) 변수와 자료형 941 02-21
45 └❶ Mini Project (자료형 사용) 593 03-01
44    └❷ Mini Project (자료형 사용) (모범 답안) 536 03-01
43 └❶ 도전 문제 1) 1537 03-16
42    └❷ 도전 문제 1) (모범 답안) 1230 03-16

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