Bạn không cần phải là một chuyên gia toán học để trở thành một lập trình viên giỏi, nhưng có một số khái niệm toán học cần học để giúp bạn hiểu cách máy tính hoạt động và giúp bạn thành công trong các cuộc phỏng vấn. Trong hướng dẫn này, bạn sẽ tìm hiểu cách chuyển đổi một số thập phân thành bất kỳ cơ số nào giữa nhị phân và thập lục phân bằng cách sử dụng cấu trúc dữ liệu Stack với các ví dụ trong JavaScript
Thực hành truy xuất
Ngăn xếp là gì?
Căn cứ là gì?
Làm thế nào để bạn chuyển đổi một số thập phân thành nhị phân?
Ngăn xếp là gì?
Ngăn xếp là một cấu trúc dữ liệu tuân theo nguyên tắc Nhập sau xuất trước [LIFO]. Chúng tôi chỉ có thể thêm hoặc xóa các phần tử từ đỉnh ngăn xếp
Nếu bạn muốn tìm hiểu sâu hơn, hãy xem Cấu trúc dữ liệu ngăn xếp JavaScript
Căn cứ là gì?
Cơ số là số các chữ số khác nhau dùng để đếm trong một hệ thống số. Chúng tôi đếm ở cơ sở 10 rất có thể là do chúng tôi tiến hóa mười ngón tay. Khi chúng ta đếm trong cơ số 10, chúng ta sử dụng mười số nguyên riêng biệt
Làm thế nào để chuyển đổi một số thập phân thành nhị phân
Để hiểu cách chuyển đổi một số thập phân thành cơ số, trước tiên bạn cần hiểu cách chuyển đổi một số thập phân thành nhị phân. Nhị phân là cơ sở 2. Chúng ta có hai chữ số khác nhau để đếm,
F
1 và F
2. [Hoặc F
3 và F
4]Để tính giá trị nhị phân, chúng ta cần chia số thập phân cho
F
5 cho đến khi thương số bằng không. Chúng tôi lưu trữ phần còn lại của mỗi phép chia và sử dụng nó để tạo một chuỗi đại diện cho cơ sởNếu bạn muốn tìm hiểu sâu hơn, hãy xem Cách chuyển đổi số thập phân thành nhị phân trong JavaScript
Hãy nhận Meta 🧠
Hãy tự hỏi bản thân những câu hỏi sau và ghi nhớ chúng khi bạn tiếp tục
Làm thế nào để bạn xây dựng một cái gì đó từ không có gì?
Làm thế nào để chúng ta đếm bằng cách sử dụng cơ số lớn hơn 10?
Tại sao tôi cần biết điều này?
Cách chuyển đổi số thập phân thành cơ số
Nếu chuyển đổi một số thập phân thành nhị phân chỉ đơn giản là một quá trình lặp đi lặp lại việc chia số thập phân cho
F
5 và sử dụng phần còn lại để tạo một chuỗi, bạn nghĩ chúng ta chuyển đổi một số thập phân thành bất kỳ cơ số nào?Mô hình là gì?
Ta chia số thập phân cho cơ số
Hãy chuyển đổi
F
7 thành cơ số 16, hệ thập lục phân. Tuy nhiên, để làm được điều đó, chúng ta cần trả lời câu hỏi đặt ra ở trên. làm thế nào để chúng ta đếm bằng cách sử dụng cơ số lớn hơn 10?một số là gì?
Đó là một biểu tượng đại diện cho một giá trị
F
2 là gì?Một biểu tượng đại diện cho giá trị một
'một' là gì?
Một biểu tượng đại diện cho giá trị
F
2. [Và vòng quanh chúng ta đi…]2048 / 16 = 127
0 là gì?Trong hệ thống số thập phân hoặc cơ số 10, đó là một giá trị được biểu thị bằng hai ký hiệu. Bởi vì đó là hai biểu tượng, chúng tôi không thể sử dụng nó trong cơ số 16. Giải pháp là gì?
Hệ thập lục phân, hoặc cơ số 16, sử dụng sáu ký tự đầu tiên của bảng chữ cái La Mã để biểu thị các giá trị từ 10 đến 15
Thập phân Thập lục phân10A11B12C13D14E15FNếu chúng tôi muốn tạo cơ sở của riêng mình, chẳng hạn như Biểu tượng cảm xúc thập phân, chúng tôi có thể sử dụng bất kỳ biểu tượng nào chúng tôi muốn
Thập phân Thập lục phân10🍎11🍌12🐈13🐕14🐘15🦊Biểu tượng không thành vấn đề, miễn là tất cả chúng ta đều đồng ý về giá trị mà nó đại diện. Bạn có nghĩ rằng Emojidecimal sẽ đạt được sức hút không?
Hãy chuyển đổi
2048 / 16 = 127
1 thành hệ thập lục phân. Bước đầu tiên là lấy phần còn lại của cổ tức và số chia của chúng tôi2048 % 16 = 15
Phần còn lại của chúng tôi là
2048 / 16 = 127
2, nhưng chúng tôi không còn sử dụng cơ số 10 nữa, vì vậy chúng tôi không thể thêm giá trị này vào chuỗi thập lục phân của mình. Nếu chúng tôi sử dụng bảng chúng tôi đã tạo ở trên, chúng tôi có thể thấy rằng 2048 / 16 = 127
2 ánh xạ tới 2048 / 16 = 127
4, vì vậy chúng tôi bắt đầu xây dựng chuỗi thập lục phân của mình với nó, mang lại cho chúng tôiF
Bước tiếp theo là chia
2048 / 16 = 127
Thương của chúng ta là
2048 / 16 = 127
5, vì vậy chúng ta lặp lại các thao tác trên127 % 16 = 15
Phần còn lại của chúng tôi lại là
2048 / 16 = 127
2, vì vậy chúng tôi thêm 2048 / 16 = 127
4 vào chuỗi thập lục phân của chúng tôi, cho chúng tôiFF
Sau đó chúng tôi chia
2048 / 16 = 127
8. Thương của chúng ta là 2048 / 16 = 127
9, vì vậy chúng ta tính phần còn lại và chia 2048 / 16 = 127
9 cho 127 % 16 = 15
17 % 16 = 7
7 / 16 < 0
Phần còn lại của chúng tôi là
2048 / 16 = 127
9, vì vậy chúng tôi thêm nó vào chuỗi thập lục phân của chúng tôi, cho chúng tôi7FF
Cách chuyển đổi thập phân thành thập lục phân và bất kỳ cơ sở nào ở giữa bằng cách sử dụng ngăn xếp trong JavaScript
Hãy cấu trúc lại thuật toán mà chúng ta đã tạo trong Cách chuyển đổi số thập phân thành nhị phân trong JavaScript để chuyển đổi bất kỳ cơ sở nào giữa nhị phân và thập lục phân bằng cách sử dụng ngăn xếp. Nếu bạn không quen thuộc với ngăn xếp, trước tiên bạn có thể muốn đọc Cấu trúc dữ liệu ngăn xếp JavaScript
Để tính một cơ số, chúng ta cần chia số thập phân cho cơ số mong muốn cho đến khi thương số bằng không. Chúng tôi lưu trữ phần còn lại của mỗi phép chia và sử dụng nó để tạo một chuỗi đại diện cho cơ sở
const decimalToBase = [num, base] => {
const stack = new Stack[];
const digits = '0123456789ABCDEF';
let result = '';
while [num > 0] {
stack.push[num % base];
num = Math.floor[num / base];
}
while [stack.top > 0] {
result += digits[stack.pop[]];
}
return result;
}
Điều gì đang xảy ra ở đây?
Trước tiên, chúng tôi sử dụng lớp
127 % 16 = 15
3 của mình để khai báo một 127 % 16 = 15
4 mớiSau đó, chúng tôi khai báo một chuỗi,
127 % 16 = 15
5, đại diện cho 16 ký hiệu trong chuỗi thập lục phân của chúng tôiTiếp theo, chúng tôi khai báo một chuỗi rỗng,
127 % 16 = 15
6, mà chúng tôi sẽ sử dụng để xây dựng giá trị trả về của mìnhTiếp theo chúng ta khai báo hai vòng lặp
127 % 16 = 15
7Vòng lặp
127 % 16 = 15
7 đầu tiên lặp lại giá trị của tham số thuật toán của chúng tôi, 127 % 16 = 15
9. Trong mỗi lần lặp lại, chúng tôi sử dụng toán tử modulo, FF
0, để lấy phần còn lại của 127 % 16 = 15
9 chia cho FF
2 và FF
3 thành 127 % 16 = 15
4. Sau đó, chúng tôi gán lại giá trị của 127 % 16 = 15
9 thành giá trị hiện tại của 127 % 16 = 15
9 chia cho FF
2. Nhưng. Chúng tôi sử dụng FF
8 để làm tròn xuống. Tại sao? 🔑 Khi giá trị của
127 % 16 = 15
9 nhỏ hơn 0, chúng tôi chuyển sang vòng lặp 127 % 16 = 15
7 thứ hai, vòng lặp này lặp lại trên ngăn xếp. Chúng tôi sử dụng phương pháp 7 % 16 = 7
7 / 16 < 0
1 để loại bỏ từng giá trị khỏi đầu ngăn xếp và xây dựng chuỗi 127 % 16 = 15
6 của chúng tôi bằng cách tra cứu giá trị được liên kết của nó trong 127 % 16 = 15
5Nếu chúng ta không muốn sử dụng Stack, chúng ta có thể chỉ cần nối một chuỗi, sau đó đảo ngược nó
const decimalToBase = [num, base] => {
const digits = '0123456789ABCDEF';
let result = '';
while [num > 0] {
result += digits[num % base];
num = Math.floor[num / base];
}
return result.split[''].reverse[].join[''];
}
Nhưng
7 % 16 = 7
7 / 16 < 0
4 chuyển đổi chuỗi thành một mảng, vì vậy chúng ta chỉ có thể bắt đầu với một mảng thay thế và sử dụng 7 % 16 = 7
7 / 16 < 0
5 thay vì 7 % 16 = 7
7 / 16 < 0
6 [J4F]const decimalToBase = [num, base] => {
const digits = '0123456789ABCDEF';
let result = [];
while [num > 0] {
result.unshift[digits[num % base]];
num = Math.floor[num / base];
}
return result.join[''];
}
Hoặc chúng ta có thể gian lận và sử dụng phương thức
7 % 16 = 7
7 / 16 < 0
7 tích hợp sẵn và chuyển cơ sở của chúng ta làm đối số, nghĩa là chúng ta muốn chuyển đổi chuỗi của mình thành tham số đã cho. Ví dụF
0Nhưng cai đo co gi vui?
Sự phản xạ
Làm thế nào để bạn xây dựng một cái gì đó từ không có gì?
Làm thế nào để chúng ta đếm bằng cách sử dụng cơ số lớn hơn 10?
Tại sao tôi cần biết điều này?
Làm thế nào để bạn xây dựng một cái gì đó từ không có gì?
Mẫu biểu mẫu. Nếu bạn muốn tìm hiểu sâu hơn, hãy xem bài viết của tôi Hình thành mẫu và giải quyết vấn đề
Làm thế nào để chúng ta đếm bằng cách sử dụng cơ số lớn hơn 10?
Hệ thập lục phân, hoặc cơ số 16, sử dụng sáu ký tự đầu tiên của bảng chữ cái La Mã để biểu thị các giá trị từ 10 đến 15
Tại sao tôi cần biết điều này?
Bạn không cần phải là một chuyên gia toán học để trở thành một lập trình viên giỏi. Tuy nhiên, có một số khái niệm toán học cần học để giúp bạn hiểu cách máy tính hoạt động và giúp bạn thành công trong các cuộc phỏng vấn
Trong hướng dẫn này, bạn đã học cách chuyển đổi một số thập phân thành thập lục phân và bất kỳ cơ số nào ở giữa nhị phân và sử dụng cấu trúc dữ liệu Stack với các ví dụ trong JavaScript
Bạn muốn nâng cao kỹ năng giải quyết vấn đề của mình? . Tham gia ngay