Etepic

Diğer diller ve Derleyiciler => CCS => Konuyu başlatan: Yunus Emre - 27 Mart 2022, 01:34:50

Başlık: CCS C Hex to Decimal Çevirme
Gönderen: Yunus Emre - 27 Mart 2022, 01:34:50
Merhaba, hex olarak aldığım 1 byte veriyi nasıl decimale çevirebilirim ?
Başlık: Ynt: CCS C Hex to Decimal Çevirme
Gönderen: aRci - 27 Mart 2022, 02:02:25
Merhaba, fikir vermesi için pic basic de aşşağıdaki yontemle hex den desimale çevirebiliyorsunuz.
mantık byte değişkeninin soldan 4 bitini 10 ile çarpıp sağdaki 4 bit ile toplamaktan ibaret. alt daki kodda ilk olarak zaman değişkeninin 4 bit sağa kaydırıp 10 ile çarpıyor ve sonra zaman değişkeninin soldan 4 biti maskelenerek sağdaki 4 bit elde ediliyor daha sonrada iki sonuc toplanıyor. Bu yolu izleyebilirsiniz.

ZAMAN   = ((ZAMAN >> 4) *10) + (ZAMAN & 15)
Başlık: Ynt: CCS C Hex to Decimal Çevirme
Gönderen: ete - 27 Mart 2022, 07:57:56
Öncelikle bu ihtiyacın nereden kaynaklandığını sormam gerek. Bu şekilde bir çevirme ihtiyacı normalde olmaması gerek. Sayılar taban değerlerine göre zaten otomatik çevriliyor derleyicilerde.
Basic de sayıyı önünde bir işaret olmaksızın yazarsan yada kullanırsan desimaldir. Önüne $ işareti koyarsan Hexadesimaldir (Hex) önüne %işareti koyarsan oda binary dir. Benzer durumun C dilinde de olduğunu yada olması gerektiğini düşünüyorum. Bu şekilde çevirme ihtiyacın olmamalı diye düşünüyorum. Tabiiki ihtiyacın nerden geldiğini ve amacını bilmeden. Arci nin belirttiği yöntem uygun. Yüksek değerlikli 4 biti alıp 4 bit kaydır ve 10 ile çarp sonra düşük değerikli bitleri buna ekle. Böylece sayı HEX formattan desimal formata dönüşmüş olur.
Yada yanlızca görsel amaçlı bu işi yapıyorsan, aç windows un hesap makinesini Programlayıcı modunu seç orada sayıları her formatta görebilirsin. hex seç sayını gir altında desimal değerini onun altında binary değerini görebilirsin.
Dedim ya ihtiyaç nerden kaynaklanıyor ise ona uygun çözüm bulmak lazım.

Ete
Başlık: Ynt: CCS C Hex to Decimal Çevirme
Gönderen: Yunus Emre - 28 Mart 2022, 22:26:27
Yanıtlarınız için teşekkürler. 8+8 bit olarak veri gönderen ı2c haberleşme kullanan bir modül ile haberleşme neticesinde bu durum hasıl oldu. Lcd ekran ve seri haberleşmede direk % işareti ile çevirme yapılıyor. Ama işin içerisinde hesaplamada yapılacağı için bir türlü hex olarak aldığım veriyi decimal çevirememiştim. Uzun yoldan bir yol bulup yaptım ama sizlerin verdiği yöntemi de en kısa sürede deneyeceğim.
Başlık: Ynt: CCS C Hex to Decimal Çevirme
Gönderen: aRci - 28 Mart 2022, 23:13:51
Merhaba;
burada bit kaydırma ile çözüm bulmayı denedik aslında başka nasıl yapılabilir bilmiyorum.
şimdi kendim bir proje yapıyorum ve buna benzer ama sıralı değilde karışık düzende bir değişken içeriinden 2 veya daha fazla bit değeri okumanız gereken bir durum var. örneğin değişken adı Ayar olsun. siz bu ayar adlı değişkenin 2.3.4. ve 5. bitini okumak istediğinizde maskeleme ve kaydırma yapmanız gerekiyor.

aslında tek bit olsa symbol ile bit bit veri okuna bilir ve bu değeri direk bir değişkenin içeriği olarak kullan bilrisiniz.

SYMBOL Oku = Ayar.0

bu satırla ayar adlı değişkenin sıfırıncı bitini ayrı bir değişken adı vermiş oldunuz. bu sayede Oku = 0 derseniz Ayar değişkeninin sıfırıncı biti sıfır olacaktır. bunu 2 veya daha fazla bite aktaramıyorum varsa bir yöntem ben bilmiyorum. belki bu şekilde tanımlama ile dönüştürme gereği kalmadan verilere ulaşabiliriz.
Başlık: Ynt: CCS C Hex to Decimal Çevirme
Gönderen: Yunus Emre - 28 Mart 2022, 23:20:03
Bende CCS C benzer yöntemi kullanarak çözdüm hex to dec için yaşadığım problemi. Bit kaydırma yöntemini denedim ama maalesef başarılı olamadım.