ปัญหา
วิธีการแปลงเลขฐานสิบเป็นเลขฐานสองโดยใช้ฟังก์ชันในภาษาโปรแกรม 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