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