Hi-tech c de en kestirme yoldan make16 nasıl yapılır

Başlatan XX_CİHAN_XX, 22 Eylül 2008, 21:13:41

XX_CİHAN_XX

Bunun kestirme bir komutu varmıdır?
Benim aklıma gelen ilk yöntem şu oldu
unsigned int a;
unsigned char low, high;

a = high;
a = a<<8;
a = a || low;

Bu işlemleri yapan tek bir komut yada daha kısa yazım şekli varmıdır?
Yirmi yaşındaki bir insan, dünyayı değiştirmek ister . Yetmiş yaşına gelince , yine dünyayı değiştirmek ister, ama yapamayacağını bilir.

CoşkuN

a = high<<8 + low;

dediğinde de aynı işi yapmış olursun ama arka planda üretilen assembly kodu pek farklı olmaz sanırım.

debi

Ben de sorunla alakalı bir çelişkiyi dile getireyim.. 16 bitlik sayıyı hangi değişkende saklıyorsun ? hi-tech bilgim yok, "unsigned int a" ifadesindeki a 8 bitlik değil midir?

XX_CİHAN_XX

Alıntı yapılan: "debi"Ben de sorunla alakalı bir çelişkiyi dile getireyim.. 16 bitlik sayıyı hangi değişkende saklıyorsun ? hi-tech bilgim yok, "unsigned int a" ifadesindeki a 8 bitlik değil midir?
Hayır int 16 bittir (hi-tech te)
CCS de 8 bit.
Hi tech te 8 bit değişken açarken char ifadesi kullanılır.
CoşkuN hocamın verdiği kodda benimkinden farksız. Ancak daha düzenli gözüküyor o bakımdan daha iyi :)
Yirmi yaşındaki bir insan, dünyayı değiştirmek ister . Yetmiş yaşına gelince , yine dünyayı değiştirmek ister, ama yapamayacağını bilir.

arslan74

Alıntı yapılan: "CoşkuN"
a = high<<8 + low;

dediğinde de aynı işi yapmış olursun ama arka planda üretilen assembly kodu pek farklı olmaz sanırım.

Kodda hata var. kaydırma yapmadan önce int e cast etmeniz gerek.

a = (int)high<<8 + low;



selamlar

Gurkan-Demirbas

Merhabalar;
Hocam Hi-Tech'i hiç bilmiyorum; ama yarımyamalak C bilgimle birşey sormak istiyorum; (eğer müsaade varsa)
Bu durumda
Struct{unsigned char High,low;} a;

şeklinde tanımlasak olmaz mı sizce?

  byte      byte
-------- | --------
<High>   <Low>
<_____a_____>

iyi çalışmalar
GürkaN

arslan74

Alıntı yapılan: "Gurkan-Demirbas"Merhabalar;
Hocam Hi-Tech'i hiç bilmiyorum; ama yarımyamalak C bilgimle birşey sormak istiyorum; (eğer müsaade varsa)
Bu durumda
Struct{unsigned char High,low;} a;

şeklinde tanımlasak olmaz mı sizce?

  byte      byte
-------- | --------
<High>   <Low>
<_____a_____>

iyi çalışmalar
GürkaN

Daha önce bununla ilgili acıklama yapmıştık orayı takip edin linki aşağıda.

https://www.picproje.org/index.php/topic,21908&highlight=union

Selamlar

Gurkan-Demirbas

Alıntı yapılan: "arslan74"
Daha önce bununla ilgili acıklama yapmıştık orayı takip edin linki aşağıda.

https://www.picproje.org/index.php/topic,21908&highlight=union

Selamlar
Hocam teşekkürler; ben bu tartışmayı kaçırmışım ben.

Böyle bir tanımlama ile yukarıda bahsedilen problem çözülemezmi? yani böyle bir tanımlamadan sonra "high" ve "low"a ayrı ayrı değerler atadığımızda bu otomatikman "a" olmaz mı

Herkese iyi bayramlar diliyorum
GürkaN

XX_CİHAN_XX

Evet hocam o tartışmayı bende kaçırmışım ve union ifadesi ile bu iş dediğiniz gibi çözülür. Bende böyle birşey arıyordum tam isabet oldu.
Yirmi yaşındaki bir insan, dünyayı değiştirmek ister . Yetmiş yaşına gelince , yine dünyayı değiştirmek ister, ama yapamayacağını bilir.