C ve C++ BCD to Decimal – Decimal to BCD çevirimi

Nazlıcan

Çalışkan Üye
Katılım
10 Mar 2018
Mesajlar
200
Beğeniler
0
Yapmakta olduğumuz bir projede kullanacağımız RTC modülü için zaman verilerini decimal değerden BCD (Binary Coded Decimal) formatına çevirmemiz gerekiyordu. Bunun için araştırma yaparken değişik yöntemler gördüm. Bizim projemiz için en uygun yapıyı ise bulamadık. Biz de kalem kağıdı elimize alıp sıvadık kolları.

Bu işlemi itoa() fonksiyonunu kullarak da kolayca yapabiliyorsunuz, ama mikrokontroller ile çalıştığımız için bize en az boyuta sahip kod lazım oluyor. O yüzden bir arayış içerisine girdik.

decimaltobcd.png

Projede bize lazım olan yapı için 2 basamaklı sayıların dönüşümünün yapılması yeterli olacaktı. Biz de bu yüzden kodu şişirmeden, sadece işimize yarayacak kadar olan yapıyı oluşturduk. Eğer size kullanmak istediğiniz yerde 2’den fazla basamaklı sayılar için dönüşüm yapmak isterseniz küçük matematik hesaplamaları ile bunu yapabilirsiniz. Biz bu yapı için daha büyük sayılara göre denemelerimizi yaptık ve düzgün sonuçlar aldık.

Aşağıdaki kodu kullanarak Decimal to BCD (Binary Coded Decimal) dönüşümünü yapabilirsiniz.

Kodları daha okunur şekilde görmek için kaynaktaki adrese gidebilirsiniz.
Kod:
#include<stdio.h>

int dec2bcd(int decimal_sayi);

int main(){
	
	// Ornek Kullanim
	int binary_sayi = dec2bcd(45);
	printf("%d\n", binary_sayi);
	
	return 0;
}

// 2 basamakli sayilar icin
int dec2bcd(int decimal_sayi)
{
  return (((decimal_sayi / 10) << 4) | (decimal_sayi % 10));
}
Aşağıdaki kodu kullanarak BCD to Decimal dönüşümünü yapabilirsiniz.

Kod:
#include<stdio.h>

long int bcd2dec(int binary_sayi);

int main(){
	
	// Ornek Kullanim
	int decimal_sayi = bcd2dec(69);
	printf("%d\n", decimal_sayi);
	
	return 0;
}

// 2 basamakli sayilar icin
long int bcd2dec(int binary_sayi)
{
  return (binary_sayi >> 4) * 10 + (binary_sayi & 0xF);
}
C ve C++ dillerini kullanarak Decimal to BCD ve BCD to Decimal dönüşümlerini yapmanız bu kadar kolay.
 

Şu anda bu konu'yu okuyan kullanıcılar

Benzer konular

Üst