unsigned signed 연산

·2024년 4월 13일

컴퓨터 구조

목록 보기
3/11

unsigned addition (부호 없는 덧셈) 🤩

피연산자: w 비트
실제 합: w+1 비트
캐리 버림: w 비트,
표준 덧셈 함수: 캐리 출력을 무시한다.

ex

   1110 1001
 + 1101 0101
 
 1 1011 1110  

unsigned char 인 경우 8bits 뿐이어서 맨 앞의 1 이 버려진다.

signed addition ( 부호 있는 덧셈)😎

int s, t, u, v;
s = (int)((unsigned)u + (unsigned) v);
t = u+ v

s == t

  1110 1001
+ 1101 0101

1 1011 1110
(캐리 버림)
-> 1011 1110 

unsigned multiplication ( 부호 없는 곱셈) 🫡

피연산자 : w bits

실제 연산값: 2*w bits

w bits 버림 : w bits

상위 w비트를 무시한다.

 1110 1001
*1101 0101

1100 0001 1101 1101 
(w bits 버림)
-> 1101 1101

signed multiplication(부호 있는 곱셈)

피연산자 : w bits

실제 연산값: 2*w bits

w bits 버림 : w bits

상위 w비트를 무시한다.
하위 비트들은 동일하다.

 1110 1001
*1101 0101

0000 0011 1101 1101
(상위 비트 무시)
-> 1101 1101 

비트 시프트 이용한 2의 거듭제곱 연산 😀

비트시프트 이용 --- 자리만 옮기면 돼서 단순하고 빠름.

  • 연산:
    u << k => u * 2^k
    (signed unsigned 둘 다)
ex)
u << 3 == u * 8
(u << 5 ) - (u << 3) == u * 24

0011  1
0010  2
0100  4
1000  8

=>2배씩 증가 

1000  8
0100  4
0010  2
0001  1

=> 2 로 나누는 효과 
profile
어리둥절 빙글빙글 돌아가는 코딩세상~

0개의 댓글