2019-04-17
32비트 컴퓨터와 64비트 컴퓨터의 차이는 메모리 크기의 차이와 속도, 수 등이 있다.
1.메모리 크기차이, 32비트 컴퓨터에는 2^32 = 4기가 램을 사용할 수 있고
64비트 컴퓨터에는 2^64까지 가능하다 (이론상) 현실로는 192GB까지 사용할 수 있다
컴퓨터의 데이터의 최소단위인 레지스터 크기인 'bit' 단위로,
CPU에서 RAM까지 연결된 선의 숫자 개념이 32비트 컴퓨터인것으로, 32개의 선을 사용 한다고 이해했다.
1 digit이란, 한자리로 표현할 수 있는 개수를 뜻하고,
2 <-> 8 <-> 16 진수 변환이나,
정수 오버플로우, 127에 1을 더했을때 -128이 나오는 이유(1byte를 사용할때)에 대해 공부했다.
127 = 01111111 인데 여기에 1을 더하게되면 10000000이 되고, 이수는 -128이란 숫자를 의미 (128을 2의 보수화 해서 음수화시켜봄)
일반적으로 32비트 컴퓨터에서 정수형(int) 는 4byte 64비트에선 8byte (자신의 컴퓨터 따라감)
단 자바스크립트에서 정수는 모두 double형을 쓰는 특징을 가지는데 이유는 cpu를 많이 사용하는 cpu-bound를 하지 않는 다는 가정하에 만들어진 웹을 위한 스크립트 언어이기 때문이다. 이는 i/o를 많이 사용 (i/o bound 를 많이 사용하기 위함)
a = 10; b =2.34; typeof(a)==typeof(b) true (콘솔로 찍어보면 타입이 같다고 나온다 모두 정수형으로 취급하기 때문)
컴퓨터에는 가산기(adder)밖에 없다, 다만 시프트나 보수기는 존재하기 때문에 산술 연산을 하기위해서 모두 덧셈으로 계산해야 한다
(4bit 연산을 하기위해선 그 2배인 8bit가 필요하다)
-는 , 2의 보수화해서 덧셈으로 해결하고 43 - 27 = 43 + (-27)
x는 비트를 두개로 나눠서 우측에 밑수, 밑수의 끝이 1이면 좌측에 윗수를 더하고 우측시프트 0이면 그냥 시프트를 연산하고 싶은
비트수 만큼 하면된다
ex) 1010
곱하기 0101을 한다면
0000 | 0101
가장 끝의수가 1이므로 윗수를 좌측에 더하고, 1010 | 0101 우측 쉬프트 하고 빈칸을 0으로 삽입한다
(0)101|0010 이된다 단, 0이나오면 그냥 우측 쉬프트 한다 이것을 위의 예는 4비트이므로 4번 반복한다
/ 나눗셈은 똑같이 나머지 / 몫 영역으로 나누고 나머지 영역에 0000 / 나눠지는 수 를 넣은후
좌쉬프트 먼저한후, 채워지는 수를 정하는데, 나머지 영역에서 나누는 수를 빼서 부호비트를 확인하고 음수면 0,
양수면 나머지 영역을 교체후 1을 삽입한다
ex) 0011로 1011을 나눈다고 치면
0000 (나머지영역 0으로 초기화) | 나눠지는수 1011 0000 | 1011
좌쉬프트 ?에 들어갈 수는 나머지영역 - 나누는수 0001| 011?
0001-0011 = 0001 + - (0011) = 0001 + 1101 = 1110 부호비트가 1이므로 음수, ?자리에 0삽입후 1회쉬프트 끝
0001|0110
한번더 좌쉬프트 후 ?에 들어갈 수 를 마찬가지로 구하면 0010|110?
0010 - 0011 = 0001 + -(0011) = 0010 + 1101 = 1111 부호비트가 1이므로 또 음수 ? 0자리에 0삽입후 2회 쉬프트 끝
세번째 쉬프트를 하고 ?에 자리값을 구하면 0010|1100
0101 - 0011 = 0101 + -(0011) = 0101 + 1101 = 10010 부호비트가 0이므로 양수 0101|100?
나머지 영역을 0010으로 대체, 0010 | 1001 끝에 1을 삽입한다 이를 비트수만큼 반복한다
내일은 실수표현 방법에 대해 배울건데, 맛만 본것은 1234 = 1234x 10^0로 표현할 수 있고 이 부동 소수점 방식으로하면
*정밀도가 떨어지는대신, 표현범위가 늘어나게 된다* 이걸 기억하라는게, 고정소수점 방식이면 표현범위가 너무적다
ex) 8비트(1바이트 상황일때) -8~7 (가수부) 밖에 표현하지 못한다.
'공부 > TIL-D' 카테고리의 다른 글
오늘 배움에 - 깊이를(연산,가위바위보,버블소트) (0) | 2019.04.19 |
---|---|
오늘 배운것 자세히 (0) | 2019.04.18 |
<picture>태그 <source>태그 background-size속성 (0) | 2019.04.16 |
오늘의 배운것 자세한 내용 (0) | 2019.04.15 |
HTML/CSS 심화 2회차 (0) | 2019.04.14 |