반응형
Logic operations. these operations refer to those operations that apply the same basic opeation
on individual bits of a pattern, or on two corresponding bits in two patterns.
비트레벨 논리동작을 우리가 정의할 수 있다는것을 의미한다네요.
A bit can take one of the two values : 0 or 1.
0 : false
1 : true
NOT
1 -> 0
0 -> 1
AND (both digits should 1 -> true)
0 & 0 -> 0
0 & 1 -> 0
1 & 0 -> 0
1 & 1 -> 1
OR (if 1 exists -> true)
0 | 0 -> 0
0 | 1 -> 1
1 | 0 -> 1
1 | 1 -> 1
XOR (both digits is same -> true, differ -> false)
0 )| 0 -> 0
0 )| 1 -> 1
1 )| 0 -> 1
1 )| 1 -> 0
X xor Y = [X and (not) Y] or [(not) X and Y]
위의 연산이 xor과 동일하다고 하네요. 어렵네 ㅠ
Shift operations.
Shift operations move the bits in a pattern, changing the positions of the bits.
간단하네요. 단순히 비트패턴을 한쪽으로 이동시키는 연산을 말합니다.
단, signed number에 대해서는 사용하지 않습니다. 부호의 의미가 없어져버리기 때문.. 일듯하네요
< Logical shift operation >
ex) Left shift :: [ 10011000 -> 00110000 ]
없던자리는 0으로 채워버립니다.
Left shift : multyply an integer by two
right shift : divide an interger by two
물론, overflow가 발생하는 경우, 수의 손실은 막을 수 없습니다.
< Arithmetic shift operation >
ex) Left shift :: [ 10011000 -> 00110001 ]
shift로 인해 잃어버린 비트는, 새로 들어오는 자리에 위치하도록 합니다.
Left shift : multyply an integer by two
right shift : divide an interger by two
이경우는 수의 손실이 없습니다. 반대방향의 shift 연산을 통해, 원래의 수를 복원할 수 있습니다.
shift 연산 이후에는, 캐리에 대해서 설명이 조금 나오구..
뺄셈 연산에 대해서 2의 보수를 취한다는거 조금 나오네요
5.75 + (-7.0234375) 를 floating-point 로 계산해보고 있네요..
5.75 = 101.11 입니다. 이를 floating point로 나타내면
(3자릿수이기 때문에, Exponent는 excess_127 + 3)
Sign Exponent Mantissa
5. 75 = 0 0111 1111 00000 000000--
+ 11 + 10111 000000--
= 0 1000 0010 10111 000000--
-7.0234375 도 나름의 노동을 이용하여 -_-; 계산하면
1 1000 0010 1110 0000110000---
부왘.. 어렵네요
이 둘을 적절하게 계산하면
S E Denormalized M
1 1000 0010 0010100011000000000--
S E M
1 0111 1111 010001100000000000000000--