|
http://www.hackerschool.org/HS_Boards/zboard.php?id=Free_Board&no=8372 [복사]
1. 같습니다. 단지 나누는수가 8, 16이죠...
2. 0101 을 10진수로 바꾼다면 오른쪽 끝자리가 1 그다음이 2 그다음이 4 마지막으
로 가장 왼쪽이 8의 자리입니다. 즉 0101 이라면 1과 4의 자리에 1이므로 (4*1)+(1
*1)이 되어 10진수 5가 되는거죠. 8진수와 16진수는 각자리가 끝에서부터 1,8,64 이
런식으로 증가하고 16진수는 1,16, 256이런식으로 증가합니다. 이것은 10진수를 통
해서 쉽게 이해할수 있을겁니다. 10진수 첫째자리는 1단위 그다음 자리단위는 10 그
다음은 100이 되듯이요.
예를 들어보자면....2진수는 1001 -> 값
8421 -> 각자리마다의 계산값
8자리와 1자리가 1이고 나머지는 0이므로....
계산> (8*1)+(4*0)+(2*0)+(1*1) = 9(10진수) 가 되는겁니다.
8진수는 014 -> 값
6481 -> 각자리마다의 계산값
계산> (0*64)+(1*8)+(4*1) = 12(10진수) 가 되는겁니다.
16진수 91 -> 값
161 -> 각자리마다의 계산값
계산> (9*16)+(1*1) = 145(10진수) 가 됩니다.
8진수 16진수는 자리수가 커질때마다 값이 매우 커지기 때문에 작은값으로
예제를 만들었습니다.
3. 비트연산이란 우리가 일반적으로 하는 사칙연산과 논리연산을 비트단위에서
연산하는것을 말합니다. 비트단위이므로 2진수를 이용한 연산이 되겠죠.
4(10) + 5(10) = 9(10) -> 10진수를 이용한 연산.
0100(2) + 0101(2) = 1001(2) -> 2진수를 이용한 비트연산.
(1)
0100
+ 0101
----------
1001
이런형태로 계산되는겁니다. 2진수이므로 1이 최대값이기 때문에 1+1은 그 윗자
리로 올림수가 +1되고 자신은 0이되는거죠.
하지만 이런 사칙연산보다는 논리연산을 위해 비트연산을 많이 하는데 그이유는
속도와 메모리때문입니다.
컴퓨터는 기본적으로 2진수형태로 움직입니다.(실제로 사용자가 10진수를 입력
해도 컴퓨터는 2진수로 모든것을 해석하죠) 그렇기때문에 입력때부터 2진수로
입력을 한다면 컴퓨터가 별도의 해석없이 바로 처리가 가능한것이죠. 속도의 향
상을 가져옵니다. 그에따른 메모리 효율도 있습니다.
하지만 컴퓨터의 발달로 그차이는 매우 좁아져서 별차이를 못느끼실겁니다.
(과거에나 그렇다는거죠.)
논리연산 예를 들어보죠.
0101 OR 0011 = 0111 입니다. OR의 의미는 각비트를 비교해서 하나라도 1이면
결과가 1이되죠.
0101
OR 0011
--------------
0111
OR외에도 AND(:비트를 비교해 두개모두 1일때 1) NOT(비트를 역으로변화)
NOR, NAND, XOR등이 있습니다. 더 자세히 알고 싶다면 디지털공학 책을
구해서 보시길...
|
Hit : 10925 Date : 2007/02/04 01:04
|