iki heksadesimal sayı OR' lamak için kullanılan komut?

Başlatan ghistmanzero, 11 Mayıs 2017, 13:26:30

ghistmanzero

bir  8x8 dot matrise sayı yazdırmaya çalışıyorum . dot matrisi ikiye böldüm mantık olarak .4x8 ve 4x8 şeklinde .mesela sağ tarafa bir rakam yazıyorum.sol taraf boş oluyor .sayı 10 dan büyük olunca on için ayrı tanımlama yapmak yerine direk 1 i 4 bit kaydırıp sonra da sıfır ile OR'lamaya çalışıyorum ama gereken komut konusunda sıkıntı çekiyorum.yardım edebilecek var mı acaba ?

vitruvius


MC_Skywalker


sadogan

0 ile or lamanın bir  manası yok zaten or lamayın.
0xAB yi 4 bit sağa kaydırınca  0x0A olur bunu 0 ile orlayınca sonuc yine 0x0A olur.
yinede orlamak isterseniz  degisken= 0x0A|0x00

ghistmanzero

@sadogan @MC_Skywalker @vitruvius  teşekkürler  :) or'lama olayı tamam. ornegın 0x07 ve 0x0e gibi iki sayı hani benım ugraştıklarım.ben bunları 0xe7 halıne getirmeye çalışıyorum .bu durumda once 0x0e yı 4 bıt kaydırıp 0xe0 halıne getirip sonra or'lamak gerekecek degıl mı ?

vitruvius

Bunu sorana kadar denesen kendin bulurdun coktan cevabi.

#include <stdio.h>

int main()
{
    int x = 0x07;
    int y = 0x0E;

    printf("\nx: 0x%02x\n",x);
    printf("y: 0x%02x\n",y);
    
    int z = y << 4;
    printf("z: 0x%02x\n",z);
    
    int num = x | z;
    printf("num: 0x%02x\n",num);

    return 0;
}


x: 0x07                                                                                                                                                                                                                                                                                                                      
y: 0x0e                                                                                                                                                                                                                                                                                                                      
z: 0xe0                                                                                                                                                                                                                                                                                                                      
num: 0xe7

ghistmanzero

Alıntı yapılan: vitruvius - 11 Mayıs 2017, 17:03:03
Bunu sorana kadar denesen kendin bulurdun coktan cevabi.

#include <stdio.h>

int main()
{
    int x = 0x07;
    int y = 0x0E;

    printf("\nx: 0x%02x\n",x);
    printf("y: 0x%02x\n",y);
    
    int z = y << 4;
    printf("z: 0x%02x\n",z);
    
    int num = x | z;
    printf("num: 0x%02x\n",num);

    return 0;
}


x: 0x07                                                                                                                                                                                                                                                                                                                      
y: 0x0e                                                                                                                                                                                                                                                                                                                      
z: 0xe0                                                                                                                                                                                                                                                                                                                      
num: 0xe7

tekrardan teşekkürler .denedim denemesine ama olmadı.dot matrix için elimde iki dizi var hani biri "1" rakamı için gereken dizi " char bir[7]={
0x04,0x0c,0x04,0x04,0x04,0x04,0x0e// 1
};" şeklinde diğeri de "4" rakamı diyelim.o da şöyle "  char dort[7]={
0x02,0x06,0x0a,0x12,0x1f,0x02,0x02 // 4
};"   mesela bunlar normalde ayrı ayrı atılınca çalışıyorlar.ancak bunları dediğiniz şekilde kaydırıp orlayınca sacma değerler çıkıyor. ben ikisini birleştirip "14 " yazdırmak istiyorum.ama maalesef rastgele yakıyor

vitruvius

Dot matrisin yapisina ve OR islemi sonucunda elde ettigin degere bir bak da yorumla bakalim hakikaten rastgele mi yaniyor yoksa ne gonderdiysen o mu yaniyor?

dursuncemal

onlar basamagindaki sayıyı 4 bit sola kaydırırp birler basamagindaki sayı ile toplarsaniz olmasi lazim.
:=