İmzalı tam sayıların işaretlenmemiş alanlara dönüştürülmesi, bunların aralıklarının ve sırasının korunması sorunuyla karşı karşıya geliyorum. Aşağıdaki tanım göz önüne alındığındaİmzalı tamsayı aralıkları işaretsiz olarak işaretlendi
:
#include <limits>
#define MIN(X) std::numeric_limits<X>::min();
#define MAX(X) std::numeric_limits<X>::max();
imzalı dizi harita için en hızlı ve doğru yolu nedir [MIN (T) MAX (T)] imzasız aralığa[0, MAX (U)]?
:
T tamsayı tip
U == işaretsiz bir tamsayı türü
sizeof (T) 'dir sizeof (U)
Başarısız bir çözüm bulmak için çeşitli bit twiddling ve sayısal yöntemler.
_ "İmzalı tam sayıların imzasızlara dönüştürülüp, aralıklarının korunacağı bir sorunla karşı karşıyayım" _ Er, -1'den ne beklediniz? Menzili korumaya çalışıyorsun ama gerçek değeri değil mi? Ya da ne? Ve _what_ "çeşitli yöntemler" sizin için çalışmadı? Hangi şekilde işe yaramadılar? (bu bağlamda "başarı olmadan" nedir?) Belirli bir yaklaşım hakkında özel bir soru sorun. –
Eğer menzili korursanız, değeri korur çünkü bir değer menzil içindeki pozisyonu ile tanımlanır. Eğer soruyu okursanız açık bir şekilde, -MAX (T) 0 olur. Yani -1, MAX (U)/2 - 1 olur. – plasmacel
@plasmacel Son yorumunuzdaki niyeti açıklamak için sorunuzu düzenlemenizi öneririm . Genel olarak, ABC'yi XYZ'ye eşlemek, örneğin A-> X, B-> Z, C-> Y ile karşılanır. –