Skip to Content
CoursesCSC102แปลงเลขฐาน 10 เป็นเลขฐาน 2

แปลงเลขฐาน 10 เป็นเลขฐาน 2

โจทย์

รับค่าเลขฐาน 10 แล้วแปลงออกมาเป็นเลขฐาน 2 โดยไม่ใช้เมธอด Integer.toBinaryString()

InputOutput
14710010011
210
7111
21474836471111111111111111111111111111111

โค้ด

import java.util.Scanner; public class Main { public static void main (String[] args) { Scanner scanner = new Scanner(System.in); int base10Number = scanner.nextInt(); String base2Number = ""; while (base10Number > 0) { int divisionAnswer = base10Number / 2; int remainder = base10Number % 2; base10Number = divisionAnswer; base2Number = remainder + base2Number; } System.out.println(base2Number.isEmpty() ? "0" : base2Number); } }

คำอธิบาย

ขั้นตอนที่ 1: การนำเข้าไลบรารี

import java.util.Scanner;
  • บรรทัดนี้เป็นการนำเข้าไลบรารีที่ชื่อว่า Scanner
  • Scanner เป็นเครื่องมือที่ช่วยให้เราสามารถรับข้อมูลจากผู้ใช้ได้
  • เปรียบเสมือนการหยิบเครื่องมือที่เราจะใช้รับฟังคำสั่งจากผู้ใช้มาเตรียมไว้

ขั้นตอนที่ 2: การสร้างคลาส

public class Main { // โค้ดอื่นๆ จะอยู่ในนี้ }
  • class Main คือการสร้างกล่องใหญ่ที่จะเก็บโค้ดทั้งหมดของเรา
  • คิดเหมือนกับการสร้างห้องทำงานที่ชื่อว่า “Main” ที่จะใช้เก็บทุกอย่างที่เราจะทำ

ขั้นตอนที่ 3: การสร้างเมธอดหลัก

public static void main (String[] args) { // โค้ดหลักจะอยู่ในนี้ }
  • นี่คือจุดเริ่มต้นของโปรแกรมของเรา
  • เปรียบเสมือนประตูทางเข้าของห้องทำงาน เมื่อเราเปิดโปรแกรม มันจะเริ่มทำงานจากตรงนี้

ขั้นตอนที่ 4: การสร้างตัวรับข้อมูล

Scanner scanner = new Scanner(System.in);
  • เราสร้างเครื่องมือที่ชื่อว่า scanner เพื่อรับข้อมูลจากผู้ใช้
  • คิดเหมือนกับการเตรียมกระดาษและปากกาไว้พร้อมจดบันทึกสิ่งที่ผู้ใช้จะบอกเรา

ขั้นตอนที่ 5: การรับข้อมูลจากผู้ใช้

int base10Number = scanner.nextInt();
  • เราใช้ scanner เพื่ออ่านตัวเลขฐานสิบที่ผู้ใช้พิมพ์เข้ามา
  • ตัวเลขนี้จะถูกเก็บไว้ในกล่องที่ชื่อว่า base10Number
  • เปรียบเสมือนการถามคำถามกับผู้ใช้ว่า “กรุณาใส่ตัวเลขฐานสิบ” แล้วเราจดตัวเลขนั้นลงในสมุด

ขั้นตอนที่ 6: การเตรียมตัวแปรสำหรับเก็บผลลัพธ์

String base2Number = "";
  • เราสร้างกล่องว่างๆ ที่ชื่อว่า base2Number เพื่อเก็บผลลัพธ์เลขฐานสอง
  • คิดเหมือนกับการเตรียมกระดาษเปล่าไว้เขียนคำตอบ

ขั้นตอนที่ 7: การแปลงเลขฐานสิบเป็นฐานสอง

while (base10Number > 0) { int divisionAnswer = base10Number / 2; int remainder = base10Number % 2; base10Number = divisionAnswer; base2Number = remainder + base2Number; }
  • นี่คือขั้นตอนการแปลงเลขฐานสิบเป็นฐานสอง โดยใช้วิธีการหารด้วย 2 ไปเรื่อยๆ
  • while (base10Number > 0) หมายถึง ทำซ้ำไปเรื่อยๆ ตราบใดที่ base10Number ยังมากกว่า 0
  • divisionAnswer = base10Number / 2 คือการหาร base10Number ด้วย 2 แล้วเก็บผลลัพธ์ไว้
  • remainder = base10Number % 2 คือการหาเศษจากการหารด้วย 2
  • base10Number = divisionAnswer คือการอัพเดทค่า base10Number เป็นผลลัพธ์จากการหาร
  • base2Number = remainder + base2Number คือการนำเศษที่ได้มาต่อหน้าผลลัพธ์เดิม

เปรียบเสมือนการแบ่งขนมให้เพื่อน 2 คนไปเรื่อย ๆ แล้วจดว่าแต่ละครั้งมีขนมเหลือกี่ชิ้น จนกว่าจะไม่สามารถแบ่งได้อีก

ขั้นตอนที่ 8: การแสดงผลลัพธ์

System.out.println(base2Number.isEmpty() ? "0" : base2Number);
  • นี่คือการแสดงผลลัพธ์เลขฐานสองที่เราได้
  • ถ้า base2Number ว่างเปล่า (กรณีที่ตัวเลขเริ่มต้นเป็น 0) เราจะแสดง “0”
  • ถ้าไม่ว่างเปล่า เราจะแสดงค่าที่แปลงได้
  • เปรียบเสมือนการอ่านคำตอบที่เราจดไว้บนกระดาษให้ทุกคนฟัง

ภาพอธิบายการหารเอาเศษ

Base 10 to Base 2 Division

ปรับปรุงล่าสุด