#include<iostream>
using namespace std;
int main()
{
int H; int M; int input;
cin >> H >> M >> input;
if (M + input > 59)
{
H = H + ((M + input) / 60);
M = (M + input) % 60;
if (H > 23) H = H - 24;
cout << H << " " << M << endl;
}
else
{
M = M + input;
cout << H << " " << M << endl;
}
}
#include<iostream>
using namespace std;
int main()
{
int H, M;
cin >> H >> M;
if (M - 45 < 0)
{
M = 60 - (45 - M);
if (H - 1 < 0)
{
H = 23;
cout << H << " " << M << endl;
}
else
{
--H;
cout << H << " " << M << endl;
}
}
else if (M - 45 > 0)
{
M = M - 45;
cout << H << " " << M << endl;
}
else if (M - 45 == 0)
{
M = 0;
cout << H << " " << M << endl;
}
}
이 글은 혼자 공부하는 컴퓨터 구조 + 운영체제 (저자 : 강민철)의 책과 유튜브 영상을 참고하여 개인적으로 정리하는 글임을 알립니다.
연산 코드와 오퍼랜드
명령어는 연산 코드와 오퍼랜드로 구성되어 있다.
연산 코드
오퍼랜드
위 그림의 색으로 칠해져 있는 필드 값, 즉 '명령어가 수행할 연산'을 연산 코드라 하고, 흰색 배경 필드 값, 즉 '연산에 사용할 데이터' 또는 '연산에 사용할 데이터가 저장된 위치'를 오퍼랜드라고 한다. 후자가 훨씬 더 많이 사용하므로 이를 주소 필드라고 부르기도 한다.
연산 코드는 연산자, 오퍼랜드는 피연산자라고도 부른다.
이를 간단한 그림으로 나타내면 아래와 같다.
명령어는 연산 코드와 오퍼랜드로 구성되어 있다.
연산 코드는 명령어가 수행할 연산이다.
오퍼랜드는 '연산에 사용할 데이터' 또는 '연산에 사용할 데이터가 저장된 위치'이다.
'연산에 사용할 데이터가 저장된 위치'가 훨씬 많이 쓰이므로 주소 필드라고 하기도 한다.
오퍼랜드
오퍼랜드 필드에는 숫자나 문자와 같이 연산에 사용할 데이터를 직접 명시하기보다는, 많은 경우 연산에 사용할 데이터가 저장된 위치, 즉 메모리 주소나 레지스터 이름이 담긴다. 그래서 오퍼랜드 필드를 주소 필드라고 부르기도 한다.
오퍼랜드는 명령어 안에 하나도 없을 수도 있고, 한 개만 있을 수도 있고, 한 개 이상일 수도 있다.
오퍼랜드가 하나도 없는 명령어를 0-주소 명령어, 오퍼랜드가 하나인 명령어를 1-주소 명령어, 두 개인 명령어를 2-주소 명령어, 세 개인 명령어를 3-주소 명령어라고 부른다.
연산 코드
연산 코드 종류는 매우 많지만, 가장 기본적인 연산 코드 유형은 아래의 4가지로 나눌 수 있다.