Bildirim
C++ büyük sayılarla işlem yapma
Daha Fazla 
Bu Konudaki Kullanıcılar:
Daha Az 

2 Misafir - 2 Masaüstü

Giriş
Mesaj
-
-
up -
Ilk aklıma gelen bir yapı oluşturup yapmak. Yani atıyorum içinde 3 tane int değişken olur ama siz uygun fonksiyonlarla bu 3 değişkeni tek değişken gibi yorumlayabilirsiniz. -
quote:
Orijinalden alıntı: 4kalan
Ilk aklıma gelen bir yapı oluşturup yapmak. Yani atıyorum içinde 3 tane int değişken olur ama siz uygun fonksiyonlarla bu 3 değişkeni tek değişken gibi yorumlayabilirsiniz.
mesela şöyle birşey olabilir sanırım.
string tipinde sayı alınıp basamak basamak işlemler yapılıp yeni bir stringe atılabilir. yada string uzunluğu kadar tek rakam tutan bi array yaratılıp her basamak ordaki bi eleman olup ona göre işlem yapılbilir sanırım. şimdi bunları yapmayı deneyeyim teşekkürler hocam :D şimdilik sadece toplama çıkarma yapmayı deneyeceğim :D -
Matematiksel olarak nasıl yapılıyorsa aynı tekniği uygulayabilirsiniz ama bu sadece deneysel olarak kullanılabilir. Normalde yoğun şekilde asm kullanılması gerekir. Mesela 64 bit toplama örneği verirsek (işlemci 32 bit olsun).
64 bitlik (doğal) değişken olmayacağı için bunu string ya da başka bir şekilde alırız. Sonra bunu sayı gösterimine çevirip 2 adet değişkene atarız. Bir değişken üst 32 biti ifade ederken diğeri alt 32 biti gösterir. Bu şekilde 2 adet 64 bitlik sayıyı 4 adet değişkene dağıttıktan sonra algoritma şöyle işler;
1- Alt 32 bitleri topla
2- Üst 32 bitleri topla
3- Taşma bitini (carry flag) 2. adımdaki sonuca ilave et.
Çoğu işlemcide taşma bitini ve değişkenleri birlikte toplayan komut bulunur. Böylece 2. ve 3. adımlar tek hamlede halledilir.
Asm kullanılmazsa sonucun taşıp taşmayacağını aritmetiksel olarak hesaplamak gerekir. Bu da işlemi onlarca kat yavaşlatır.
-
quote:
Orijinalden alıntı: Vandenesse
Matematiksel olarak nasıl yapılıyorsa aynı tekniği uygulayabilirsiniz ama bu sadece deneysel olarak kullanılabilir. Normalde yoğun şekilde asm kullanılması gerekir. Mesela 64 bit toplama örneği verirsek (işlemci 32 bit olsun).
64 bitlik (doğal) değişken olmayacağı için bunu string ya da başka bir şekilde alırız. Sonra bunu sayı gösterimine çevirip 2 adet değişkene atarız. Bir değişken üst 32 biti ifade ederken diğeri alt 32 biti gösterir. Bu şekilde 2 adet 64 bitlik sayıyı 4 adet değişkene dağıttıktan sonra algoritma şöyle işler;
1- Alt 32 bitleri topla
2- Üst 32 bitleri topla
3- Taşma bitini (carry flag) 2. adımdaki sonuca ilave et.
Çoğu işlemcide taşma bitini ve değişkenleri birlikte toplayan komut bulunur. Böylece 2. ve 3. adımlar tek hamlede halledilir.
Asm kullanılmazsa sonucun taşıp taşmayacağını aritmetiksel olarak hesaplamak gerekir. Bu da işlemi onlarca kat yavaşlatır.
peki sizce c++'ta bunu yapmaya çalışmak gereksiz mi? şuan amacım öyle kullanılcak bişey değil de kendimi geliştirme amaçlı
-
Amaç kendini geliştirmekse niye gereksiz olsun. Benzer bir konuyu şurada tartışıp örneklendirmiştik (ban yediğim için farklı isimle yazıyorum çaktırma )
http://forum.donanimhaber.com/m_73385316/tm.htm -
quote:
Orijinalden alıntı: Vandenesse
Amaç kendini geliştirmekse niye gereksiz olsun. Benzer bir konuyu şurada tartışıp örneklendirmiştik (ban yediğim için farklı isimle yazıyorum çaktırma)
http://forum.donanimhaber.com/m_73385316/tm.htm
hocam şuan anladım baya, toplama/çıkarma/çarpma da sıkıntı yok en azında kafa da yok ama bölmeyi nasıl yaparım bilmiyorum. hani 9/3'ü 9-3-3-3 şeklinde yapıp kaç çıkarma olduğunu sayarak yapabiliriz. ama tam bölünmediği durumda küsüratı nasıl hesaplarım bilemedim.
Sayfa:
1
Ip işlemleri
Bu mesaj IP'si ile atılan mesajları ara Bu kullanıcının son IP'si ile atılan mesajları ara Bu mesaj IP'si ile kullanıcı ara Bu kullanıcının son IP'si ile kullanıcı ara
KAPAT X
Bu mesaj IP'si ile atılan mesajları ara Bu kullanıcının son IP'si ile atılan mesajları ara Bu mesaj IP'si ile kullanıcı ara Bu kullanıcının son IP'si ile kullanıcı ara
KAPAT X