헷갈렸던것
-
비트 연산헷갈렸던것 2022. 1. 21. 17:29
비트 연산은 메모리를 절약할 수 있다는 장점이 있습니다. 비트 연산을 할 때 주의해야할 점은 부호 입니다. unsigned char a = 131; //1000 0011 char b = -125; //1000 0011 unsigned char aa; char bb; aa = a >> 5; bb = b >> 5; cout 5 = 4(0000 0100) 입니다. char -125 (1000 0011) >> 5 = -4 (1111 1100) signed 숫자에서 bit를 옮길때 비는 공간은 그 수의 부호로 채웁니다. 따라서 남은 bit들은 다 1로 채웠습니다. 컴퓨터는 음수를 표현할 때 2's complement 방식을 사용하므로 1111 1100 -> 0000 0011 -> 0000 0100(4) 가 나오고..
-
버퍼(buffer) c/c++헷갈렸던것 2021. 9. 7. 03:34
C언어 char a, b; scanf("%c", &a); scanf("%c", &b); printf("국어 성적은%c\n", a); printf("과학 성적은%c", b); 위의 코드를 살펴봅시다. char형 a와 b를 입력받아 그대로 출력해주는 코드입니다. char a 에 b를 입력하고 char b 에 f를 입력해보겠습니다. 하지만 실행 시켜보면 b를 누르고 엔터키만 눌렀는데 갑자기 다 출력 되고 프로그램이 멈췄습니다. 아직 char b를 입력도 안받았는데 프로그램이 멈췄습니다. 이유가 뭘까요? 바로 '버퍼'입니다. 우리는 여러 입력을 받을 때, 스트림을 사용하여 키보드와 프로그램을 연결시킵니다. 버퍼는 바로 키보드와 프로그램 사이에서 입력한 value를 더욱 효율적으로 연결하기 위해 존재합니다. 따라..
-
실수형 (부동 소수점)헷갈렸던것 2021. 9. 3. 19:45
실수형 float를 공부하다 부동소수점 개념이 나와서 한번 이해하는대로 정리해 보려합니다. 먼저 예를 들어 실수 263.3을 2진수로 나타내 보면 정수 부분 263 = 100000111 실수 부분 0.3 = 0.01(0011)(0011)(0011)(0011)(0011)....... 이렇게 실수 부분이 무한적으로 반복되는 것을 알 수 있습니다. 따라서 컴퓨터는 오차는 있겠지만 이러한 실수부분을 저장해야합니다. 그 방법에는 고정 소수점과 부동 소수점이 있습니다. 고정 소수점 미리 정수 비트 와 소수 비트를 정해 놓는 방식 입니다. 4byte =32bit 기준으로 예를들어 1bit는 부호 표시용, 16bit는 정수 부분, 15bit 는 실수 부분으로 정해놓으면 더 큰수나 정밀한 수를 표현하기에 어렵습니다. 정..