Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> การเขียนโปรแกรม C

การแปลงทศนิยมเป็นไบนารีโดยใช้การเขียนโปรแกรม C


ปัญหา

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