2013-04-06 22 views
5

Bazı mikro çipin iki bayt kaydına zaman aşımı değeri yazmam gereken yerleşik bir proje üzerinde çalışıyorum. Ben sağlayan ben bir algoritma hangi arıyorum 60000 söylemek 256 aralığında bir tamsayı kullanarak bu kayıtları programlamak istiyorumTamsayı iki bayta ayırma

timeout = REG_a * (REG_b +1) 

bir Zaman Aşımı-verilen: olarak

zaman aşımı tanımlanır değeri, REG_a ve REG_b hesaplar.

Tam bir çözüm mümkün değilse, bir sonraki olası büyük zaman aşımı değerini almak istiyorum.

Benim şimdiki çözüm hesaplar:: Şimdiye kadar ne yaptım

temp = integer_square_root (timeout) +1; 
    REG_a = temp; 
    REG_b = temp-1; 

Bu uygulamada iyi sonuç değerler ile sonuçlanır. Ancak daha uygun bir çözüm bulup bulamayacağınızı görmek isterim.

Oh, ve ben bellek kısıtlıyım, bu nedenle büyük tablolar söz konusu değil. Ayrıca çalışma süresi de önemlidir, bu yüzden çözümü zor kullanamam.

+0

"Zaman aşımı" ile hesaplanan değer arasındaki farkı en aza indirmek ister misiniz? Bu alıştırmanın amacı bu mu? Aksi halde sahip olduğunuz şey iyi görünüyor. –

+0

Optimalin bir versiyonu, bir kaydı en aza indirmek ve diğerini büyütmek. Her iki yazmaç da aniden değiştirmek istemediğiniz bu kayıt arayüzü ile ilgili olası sorunlar var. Her iki belleğin de aynı anda yazamadığı gibi, yazmaçlar ** yazılırken ** zamanlayıcı çalışıyor demektir. Bir kaydı en aza indirerek, daha küçük bir zaman aşımına giderken minimum aynı zamanda daha iyi bir zaman parçacığı verir. –

cevap

İlgili konular