ปัญหา
วิธีการแปลงเลขฐานสิบเป็นเลขฐานสองโดยใช้ฟังก์ชันในภาษาโปรแกรม C?
วิธีแก้ปัญหา
ในโปรแกรมนี้ เรากำลังเรียกใช้ฟังก์ชันเป็นไบนารีใน main() ฟังก์ชันที่เรียกเป็นไบนารีจะทำการแปลงจริง
ตรรกะที่เราใช้เรียกว่าฟังก์ชันการแปลงเลขฐานสิบเป็นเลขฐานสองมีดังนี้ -
while(dno != 0){ rem = dno % 2; bno = bno + rem * f; f = f * 10; dno = dno / 2; }
สุดท้ายจะคืนค่าเลขฐานสองไปยังโปรแกรมหลัก
ตัวอย่าง
ต่อไปนี้เป็นโปรแกรม C เพื่อแปลงเลขฐานสิบเป็นเลขฐานสอง -
#include<stdio.h> long tobinary(int); int main(){ long bno; int dno; printf(" Enter any decimal number : "); scanf("%d",&dno); bno = tobinary(dno); printf("\n The Binary value is : %ld\n\n",bno); return 0; } long tobinary(int dno){ long bno=0,rem,f=1; while(dno != 0){ rem = dno % 2; bno = bno + rem * f; f = f * 10; dno = dno / 2; } return bno;; }
ผลลัพธ์
เมื่อโปรแกรมข้างต้นทำงาน มันจะให้ผลลัพธ์ดังต่อไปนี้ −
Enter any decimal number: 12 The Binary value is: 1100
ตอนนี้ ลองแปลงเลขฐานสองเป็นเลขฐานสิบ
ตัวอย่าง
ต่อไปนี้เป็นโปรแกรม C เพื่อแปลงเลขฐานสองเป็นเลขฐานสิบ -
#include #include <stdio.h> int todecimal(long bno); int main(){ long bno; int dno; printf("Enter a binary number: "); scanf("%ld", &bno); dno=todecimal(bno); printf("The decimal value is:%d\n",dno); return 0; } int todecimal(long bno){ int dno = 0, i = 0, rem; while (bno != 0) { rem = bno % 10; bno /= 10; dno += rem * pow(2, i); ++i; } return dno; }
ผลลัพธ์
เมื่อโปรแกรมข้างต้นทำงาน มันจะให้ผลลัพธ์ดังต่อไปนี้ −
Enter a binary number: 10011 The decimal value is:19