# 문제 1
``` js
//조건 : 변수 A에 50을, 변수 B에 30로 서로의 값을 바꾼다
let A = 30;
let B = 50;
console.log(`A의 값은 ${A}, B의 값은 ${B} 이였음`);
let Temp = 30; // A의 값을 Temp 로 옮김
A = B; // 비어있는 A에 B의 값(50)을 넣음
B = Temp; // 비어있는 B에 Temp의 값(30)을 넣음
console.log(`A의 값은 ${A}, B의 값은 ${B}로 바뀜`);
```
# 문제 2
``` js
console.log(20 + 30); // 50
console.log("20" + "30"); // "2030"
console.log("Hello" + " " + 2021); // "Hello 2021"
console.log(1 + 2 * 3); // 7
console.log((1 + 3) ** 2); // 16
console.log(1 / 0); // undefined (Infinity in JavaScript)
console.log(6 % 2); // 0
console.log(7.5 % 2); // 1.5
console.log(5 == 5); // true
console.log(5 === 5); // true
console.log(5 == "5"); // true
console.log(5 === "5"); // false
console.log(5 != 5.0); // false
console.log(5 !== 5.0); // true
console.log("true" === true); // false
console.log(5 <= 5.0); // true
console.log(5 >= 5); // true
console.log(true || true); // true
console.log(true || false); // true
console.log(true && true); // true
console.log(true && false); // false
console.log(!true); // false
console.log(!false); // true
```
<br>
이후 오답으로 나머지 연산과 부동 소수점 수에 대해 더 정리했습니다
<br>
## 나머지 연산에 대한 정리
- **나머지 연산 로직**
```powershell
a%b = a-(b*(a/b의 정수부분))
```
- 7.5 % 2에서, 7.5를 2로 나누면 몫은 3.75이다. 3.75의 정수 부분은 3이므로, 연산 결과는 7.5 - 2*3 = 1.5이다.
<br>
## 부동 소수점 수에 대한 오해
### 정수와 부동 소수점 수
- 컴퓨터는 숫자를 저장할 때 주로 두 가지 방식을 사용한다 : 정수형, 부동 소수점형
- 컴퓨터는 내부적으로 정수와 부동 소수점 수를 다르게 저장하고 처리한다.

- 정수는 2의 보수 표현이나 다른 정수 표현 방법을 사용해 저장된다
- 부동 소수점 수는 이진수로 정확하게 표현될 수 없다.
- 따라서 컴퓨터 내부에 저장될 때 **근사치로 표현되어 저장**되는데, 이때에 약간의 오차가 발생한다.
- 그럼 이렇게 메모리도 더 많이 차지하고, 처리 속도도 느린 부동 소수점 수를 사용하는 이유는 뭘까 ?
- 정밀한 계산이 필요한 과학적 계산, 그래픽 처리, 금융 계산에 사용된다
- IEEE 754 표준
- 부동 소수점 수의 저장 방식을 정의하는 표준
- 이에 따르면, 부동 소수점 수는 부호 (Sign bit), 지수, 가수로 저장됨
<aside>
💡 실수는 컴퓨터 내부적으로 정확히 표현되지 않을 수 있으며, 근사치로 저장된다. 하지만 이때 오차는 매우 작은 범위 내에서 발생한다.
</aside>
<br>
### 자바스크립트의 숫자는 모두 number 타입
- **5는 정수, 5.0은 부동 소수점 수**이다.
- 컴퓨터는 이를 정수형 변수, 부동 소수점형 변수로 저장한다.
- **자바스크립트에서 숫자는 모두 number 타입으로 취급된다.**
- 따라서 정수와 부동 소수점 수 모두 동일한 타입으로 처리한다.
- **비교 연산 시 자동 변환 (다른 프로그래밍 언어에서 참고)**
- 보통 프로그래밍 언어에서 숫자 비교 연산을 할 때는, 정수가 부동 소수점 수로 자동 변환된다
- 물론 **자바스크립트에서 모든 숫자는 이미 number 타입으로 취급되므로, 특별한 변환이 필요하지는 않을 것**
- **5 < = 5.0 이 true 인 이유**
- JS 에서 정수(5)와 부동 소수점 수 (5.0) 은 동일한 **number 타입**으로 간주된다. 따라서 값을 비교했을 때 true 가 나온다
<aside>
💡 JS 에서 숫자는 모두 number 타입으로 취급되므로, 정수와 부동 소수점 수 모두 동일한 타입으로 처리한다
보통 다른 프로그래밍 언어에서 정수와 부동 소수점 수를 비교할 때는 정수가 부동 소수점 수로 자동 변환된다
</aside>