![[JAVA] 오버플로우와 언더플로우](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdna%2Fbazy05%2FbtsmRNKOGDV%2FAAAAAAAAAAAAAAAAAAAAAJfY0oUCj4vun9eUTZ0UnNzrtR2jP1-k_964wrKv16xC%2Fimg.jpg%3Fcredential%3DyqXZFxpELC7KVnFOS48ylbz2pIh7yKj8%26expires%3D1759244399%26allow_ip%3D%26allow_referer%3D%26signature%3DZwmfMGrZeP%252BEPK8t1C5DLLsDxMg%253D)
오버플로우(overflow)란 타입이 허용하는 최대값을 벗어나는 것을 말한다. 반대로 언더플로우(underflow)는 타입이 허용하는 최소값을 벗어나는 것을 말한다. 정수 타입 연산에서 오버플로 또는 언더플로가 발생하면 해당 정수 타입의 최소값 또는 최대값으로 되돌아간다. 예를 들어 byte타입일 경우 최대값 127에서 1을 더하면 128이 되어 오버플로가 발생하여 연산 결과는 최소값인 -128이 된다. 그리고 나서 다시 1을 더하면 -127이 된다. byte value = 127; ++value; System.out.println(value); //-128 마찬가지로 -128에서 1을 빼면 -129가 되어 언더플로가 발생하는데, 연산 결과는 최대값인 127이 된다. 그리고 다시 1을 빼면 128이 된다..
![[JAVA] 기본 연산을 할 때 주의사항](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdna%2FbTdoG7%2FbtsmRmUhjIB%2FAAAAAAAAAAAAAAAAAAAAAO3aOt7JMToI_gw-i1MVYzAIImYEfdche0t76P_2YIgP%2Fimg.jpg%3Fcredential%3DyqXZFxpELC7KVnFOS48ylbz2pIh7yKj8%26expires%3D1759244399%26allow_ip%3D%26allow_referer%3D%26signature%3D3Wg%252BjvsvsULd6riCSOtVwPRlhmI%253D)
리터럴 기본적으로 컴파일러는 정수 리터럴을 int타입으로 간주한다는 점이다. 따라서 int타입의 허용범위를 초과할 경우 long 타입임을 컴파일러에게 알려줘야 한다. 컴파일러에게 long타입임을 알려주는 방법은 정수 리터럴 뒤에 소문자 l이나 대문자 L을 붙이면 된다. long a = 10000000000; //컴파일 에러 long b = 10000000000L; //정상 또한 실수 리터럴을 기본적으로 double 타입으로 해석하기 때문에, 실수 리터럴을 float타입으로 저장하고 싶다면 리터럴 뒤에 소문자 f나 대문자 F를 붙여 컴파일러가 float 타입임을 알 수 있도록 해야 함 float a = 3.14; //컴파일 에러 float b = 3.14F; // 정상 컴파일 단계 연산과 JVM 연산 자바..
![[C++] 백준 12단계 - 1018번 문제 (체스판 다시 칠하기)](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdna%2Fb28ir9%2FbtsngrB7aC9%2FAAAAAAAAAAAAAAAAAAAAAMUwADNUQnbithnm5No4qDjRaoKLChuvhYF-ULgC49nc%2Fimg.png%3Fcredential%3DyqXZFxpELC7KVnFOS48ylbz2pIh7yKj8%26expires%3D1759244399%26allow_ip%3D%26allow_referer%3D%26signature%3Dsvj%252BpWAn5%252FuA%252F0h7%252BVLOYKreqoA%253D)
문제설명 https://www.acmicpc.net/problem/1018 1018번: 체스판 다시 칠하기 첫째 줄에 N과 M이 주어진다. N과 M은 8보다 크거나 같고, 50보다 작거나 같은 자연수이다. 둘째 줄부터 N개의 줄에는 보드의 각 행의 상태가 주어진다. B는 검은색이며, W는 흰색이다. www.acmicpc.net 소스코드 #include #include using namespace std; int** arr; //2차원 배열 동적할당을 위한 더블포인터 변수 int func(int x, int y) { int case1 = 0; int case2 = 0; for (int i = x; i < x + 8; i++) { for (int j = y; j < y + 8; j++) { if ((i + ..
![[C++] 백준 12단계 - 1436번 문제 (영화감독 숌)](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdna%2FbVBc2n%2FbtsngMFwB9L%2FAAAAAAAAAAAAAAAAAAAAAJbRv6nfM7rtoUa8-gH3vbkE7CZ5R7TTMhYm1cy8yp5J%2Fimg.png%3Fcredential%3DyqXZFxpELC7KVnFOS48ylbz2pIh7yKj8%26expires%3D1759244399%26allow_ip%3D%26allow_referer%3D%26signature%3D39B%252FAxZ59GzUjexLvDQyYFrfEII%253D)
문제설명 소스코드 #include #include using namespace std; int main() { string str; int N; cin >> N; int i = 665; int count = 0; while (true) { ++i; str = to_string(i); //i를 문자열로 바꿈 if (str.find("666") == string::npos) continue; //문자열에 666이 들어가 있지 않다면 pass else //문자열에 666이 들어간다면 { ++count; //count 증가 if (count == N) break; } } cout
![[운영체제] 파일 시스템(File System)](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdna%2FcAnJFc%2FbtsmlhF7qHF%2FAAAAAAAAAAAAAAAAAAAAAKy64aSZ2b5KZQJeQqARyzf_8H_hAcSzsR8Ch6if1zEz%2Fimg.png%3Fcredential%3DyqXZFxpELC7KVnFOS48ylbz2pIh7yKj8%26expires%3D1759244399%26allow_ip%3D%26allow_referer%3D%26signature%3DO35jXZZwWa0qFVuPnbLEFC88FxQ%253D)
이 글은 혼자 공부하는 컴퓨터 구조 + 운영체제 (저자 : 강민철)의 책과 유튜브 영상을 참고하여 개인적으로 정리하는 글임을 알립니다. 파티셔닝(partitioning)과 포매팅(formatting) 파티셔닝(파티션을 나누는 작업) : 저장 장치의 논리적인 영역을 구획하는 작업 파티션 : 파티셔닝 작업을 통해 나누어진 하나의 영역 포매팅 : 포맷을 하는 작업, 어떤 종류의 파일 시스템을 사용할지 결정하고 새로운 데이터를 쓸 준비를 하는 작업 포맷(포매팅)의 종류 저수준 포매팅 : 저장 장치를 생성할 당시 공장에서 수행되는 물리적인 포매팅 논리적 포매팅 : 파일 시스템을 생성하는 포매팅 이 글에서 포매팅은 논리적 포매팅을 뜻한다. 파일 할당 방법 포매팅까지 끝난 하드 디스크에 파일을 저장하기 운영체제는 파..
![[C++] 백준 12단계 - 19532번 문제 (수학은 비대면강의입니다)](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdna%2Fro0bF%2Fbtsm82OZEuS%2FAAAAAAAAAAAAAAAAAAAAAEWHPcjUEFLl3XBgRvy94d5yvGx0PxxrxS6y7NtQmv8x%2Fimg.png%3Fcredential%3DyqXZFxpELC7KVnFOS48ylbz2pIh7yKj8%26expires%3D1759244399%26allow_ip%3D%26allow_referer%3D%26signature%3D9zOhSmGZtjTgg4nIHY0Ex8ukTPU%253D)
문제설명 소스코드 #include using namespace std; int main(void) { int a, b, c, d, e, f; cin >> a >> b >> c >> d >> e >> f; for (int i = -999; i < 1000; ++i) { for (int j = -999; j < 1000; ++j) { if (a * i + b * j == c) { if (d * i + e * j == f) { cout
![[C++] 백준 20단계 - 18258번 문제 (큐 2)](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdna%2Fb2tf6X%2FbtsnaLTghlC%2FAAAAAAAAAAAAAAAAAAAAAKhMuj3ezqDD_BXqr7E5w39rEZSu1MW9EcGe27bnU0Pu%2Fimg.png%3Fcredential%3DyqXZFxpELC7KVnFOS48ylbz2pIh7yKj8%26expires%3D1759244399%26allow_ip%3D%26allow_referer%3D%26signature%3DN%252BZ73nDz8acpTiyupVTT%252FlbUPGA%253D)
문제설명 소스코드 #include #include using namespace std; int main() { ios_base::sync_with_stdio(false); //표준 스트림 동기화 해제 cin.tie(NULL); //입력과 출력 연결 끊기 queue que; string command; int N; cin >> N; for (int i = 0; i > command; if (command == "push") { int X; cin >> X; que.push(X); } else if (command == "pop") { if (que.empty()) cout
![[운영체제] 파일과 디렉터리](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdna%2Fk8y8W%2Fbtsl4mVp46M%2FAAAAAAAAAAAAAAAAAAAAAOzgR_YldBdJ_3RB1Czm_FH8ejU_3aKBPdK-s5dLPAZP%2Fimg.png%3Fcredential%3DyqXZFxpELC7KVnFOS48ylbz2pIh7yKj8%26expires%3D1759244399%26allow_ip%3D%26allow_referer%3D%26signature%3DpwzhGuUPpwWFAQM8BnIGi4qbtmo%253D)
이 글은 혼자 공부하는 컴퓨터 구조 + 운영체제 (저자 : 강민철)의 책과 유튜브 영상을 참고하여 개인적으로 정리하는 글임을 알립니다. 파일과 디렉터리 모두 운영체제 내부 파일 시스템이 관리하는 존재들이다. 보조기억장치의 데이터 덩어리 파일(file) 보조기억장치에 저장된 관련 정보의 집합 의미 있고 관련 있는 정보를 모은 논리적 단위 파일을 이루는 정보 파일 이름 파일을 실행하기 위한 정보 파일 관련 부가 정보(=속성(attribute) 또는 메타데이터(metadata)) 윈도우 운영체제에서 임의의 파일을 선택하고 마우스 우클릭을 하고 속성 버튼을 누르면 나타나는 정보가 파일 속성이다. 파일 속성과 유형 유형 : 운영체제가 인식하는 파일 종류(확장자)를 나타냄 파일 연산을 위한 시스템 호출 파일을 다루..