
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의 거듭제곱 연산 😀
비트시프트 이용 --- 자리만 옮기면 돼서 단순하고 빠름.
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 로 나누는 효과