Uzun verilerin carpilmasi

Başlatan bunalmis, 07 Ocak 2007, 20:15:16

z

Elimizde n bitlik  isaretli sayilari carpabilen komut yada program parcacigi  (carpici) olsun.

2n uzunluktaki isaretli sayilari elimizdeki carpici ile nasil carpariz.

Sayilarin mutlak degerini alip carpip sonra sayilarin isaretine gore sonucu modifiye etmek disinda yontem bakiniyorum.
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

mcan

carpma(int xyz, int abc)
    { int i,sonuc,sonuc2,elde,isaret;
       
       if ( ((xyz) & (0b10000.....)) )
          {
            if( ((abc) & (0b10000.....)) )
               {isaret=0;}
            else
                isaret=1;
           }
       else 
          {
            if( ((abc) & (0b10000.....)) )
               {isaret=1;}
            else
                isaret=0;
           }

        xyz=xyz & 0b011111111......;
        abc=abc & 0b011111111......;

       for(i=0;i<xyz;i++)
           {
             sonuc+=abc;

             if(sonuc<sonuc2)
                {
                  elde++;                
                 }
             sonuc2=sonuc;
             
            }
       
       return sonuc,isaret,elde;
     }


aklıma ilk gelen bu oldu toplama yaparak sonuca ulaşmak.değişkenlerin işaret bitlerini ayırıp 1. değişken kadar 2. değişkeni toplamak ve toplarken artanı ayrı bir yerde tutmak.sonucda işareti eldeyi ve sonucu döndürmek.2n lik bir alana bunları sırayla yerleştirmek kalıyor.soruyu
ama bu sizin istemediğiniz yönteme örnek oldu sanırım :)

Prof.EleCTroN

n bit sayı varsa sonuncu biti işaret biti diğer bitleri sayıya değer veren işaretsiz sayı gibi düşünelim.
Son bitleri özel veya işlemine tutar geriye kalan bitleri işaretsiz sayıymış gibi çarparız.

z

Sayilari 2'complemet  yontemiyle gostermek cok daha yaygindir. Bu nedenle onerdiginiz carpma islemi ancak sign magnitude gosterimde ise yarar.
Bana e^st de diyebilirsiniz.   www.cncdesigner.com