---
# System prepended metadata

title: 'Day 1 '

---

# 문제 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> 

## 부동 소수점 수에 대한 오해

### 정수와 부동 소수점 수

- 컴퓨터는 숫자를 저장할 때 주로 두 가지 방식을 사용한다 : 정수형, 부동 소수점형
- 컴퓨터는 내부적으로 정수와 부동 소수점 수를 다르게 저장하고 처리한다.

![image](https://hackmd.io/_uploads/SkKefEUUA.png)


- 정수는 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>