정성훈
    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] 조회 : 1689 다운 : 92   
 
△ 이전글typecast.c (교재)
▽ 다음글bit_operator.c (교재)
프로그래밍언어 실습게시판
번호 제 목 조회 등록일
Mini Project (어드벤처 게임 만들기) 추가 구현 // ★★★ 기말과제 게임구현 시 참고
실습 목차
61 └❶ lbit_shift.c (교재) 1678 02-21
60    └❷ bit_shift.c (추가) 1689 03-17
59 └❶ lbit_op.c (교재) 1647 02-21
58    └❷ bit_op.c (학생 풀이) 컴퓨터에서 음수 표현 738 03-20
57       └❸ bit_op.c (학생 풀이) 컴퓨터에서 음수 표현 (모범 답안) 1335 03-20
56 └❶ lrelational.c (교재) 1418 02-21
55 └❶ lcomp_op.c (교재) 1767 02-21
54 └❶ lbending.c (교재) 1624 02-21
53 └❶ ldays.c (교재) 1541 02-21
52 └❶ lincdec.c (교재) 1475 02-21
51 └❶ lmodulo.c (교재) 1508 02-21
50    └❷ modulo.c (학생 풀이) 시/분/초로 변환 725 03-17
49       └❸ modulo.c (추가) (모범 답안) 1206 03-17
48 └❶ larithmetic2.c (교재) 1270 02-21
47 └❶ larithmetic1.c (교재) 1424 02-21
46 (3장) 변수와 자료형 892 02-21
45 └❶ Mini Project (자료형 사용) 530 03-01
44    └❷ Mini Project (자료형 사용) (모범 답안) 479 03-01
43 └❶ 도전 문제 1) 1437 03-16
42    └❷ 도전 문제 1) (모범 답안) 1153 03-16

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