728x90
반응형
백준 문제를 풀다가 하나도 모르겠는 부분이 나왔다.
진법 변환...
이 부분은 시간을 끌 필요가 없다 생각하고 바로 공부하고와서 다시 풀어보기로 결정했다.
그 내용을 블로그에 올리려 한다.
진법변환에는 toString()과 parseInt가 사용된다.
둘의 차이는
10진수를 다른 수로 변환시키는가, 다른 수를 10진수로 변환시키는가
에 있다.
10진수를 다른 진수로 변환하기 위해서는 toString()을,
다른 진수를 10진수로 변환하기 위해서는 parseInt()를 쓴다.
toString()
특정 객체를 문자열로 반환해준다.
원하는 10진수를 특정 진수로 변환하고 싶을때 사용한다.
어떤 수를 .toString(몇진수로 변환하고 싶은지)
때문에 인자로 2와 36사이의 정수가 들어간다. radix라고 함.
let intNum = 3;
console.log(intNum.toString(2)); //11
//11은 eleven이 아니고 이진수의 00011임.
intNum = 32;
console.log(intNum.toString(16)); //20
//20은 twenty가 아니고 16진수의 00020임(2*16).
함수의 이름에도 적혀있듯, 반환된 11과 20의 타입은 string이다.
let intNum = 32;
let stringed = intNum.toString(16);
console.log("type of intNum: ",typeof(intNum)); //type of intNum: number
console.log("type of stringed: ",typeof(stringed)); //type of stringed: string
radix 값으로 2와 36사이의 정수가 아닌 다른 수가 들어간다면
RangeError 에러가 뜬다.
parseInt()
문자열을 특정 진수의 정수로 변환한다.
인수로는 parseInt('변환시키고자하는 문자열', 해당 수의 진수) 가 들어간다.
여기서 문자열은 타입이 문자열이므로 숫자여도 ''안에 삽입한다.
물론 두번째 인자도 radix다.
let intNum = "11";
let parsing = parseInt(intNum, 2);
console.log(parsing); //3
이렇게 10진수로 변환된 2진수는 문자열이 아니라 상수가 된다.
let intNum = "11";
let parsing = parseInt(intNum, 2);
console.log(typeof(parsing)); //number
특정 진수로 변화된 문자를 다른 특정 진수로 바꾸는 방법
그 방법은 10진수로 바꾼 다음에 특정 진수로 바꾸는 것이다.
예: 10진수 -> 2진수 -> 16진수로 변환
let dec = 123;
let bin = dec.toString(2); // 10진수를 2진수로 바꿈
let a = parseInt(bing, 2); // 2진수를 다시 10진수로 바꿈
let b = a.toString(16); // 10진수로 바뀐것을 다시 16진수로 바꿈
즉, parseInt(bing, 2).toString(16) // 2진수를 16진수로 바꾸기
참조!
728x90
반응형
'javascript' 카테고리의 다른 글
[Javascript] XSS(Cross-Site Scripting), CSRF(Cross-Site Request Forgery) (0) | 2024.06.19 |
---|---|
[Javascript] at(), slice(), splice() (1) | 2024.05.17 |
[Javascript] New URL(), New URLSearchParams() (0) | 2024.05.17 |
[Javascript] NanoId, @faker-js/faker (더미데이터 만들기) (0) | 2024.04.30 |
[Javascript] ESLint (.eslintrc) (1) | 2024.04.26 |
댓글