2012-02-17 7 views
8

मैं दशमलव से दशमलव तक कनवर्ट करने के लिए एक प्रोग्राम लिखना चाहता हूं।दशमलव आधार (10) को एक नकारात्मक आधार (-2) में कैसे परिवर्तित करें?

मैं यह नहीं समझ सकता कि दशमलव से दशमलव तक कैसे परिवर्तित किया जाए।

मुझे इस बारे में कोई जानकारी नहीं है कि नियम कैसे ढूंढें और यह कैसे काम करता है।

उदाहरण: 7(base10)-->11011(base-2)

मैं सिर्फ यह 7 = (-2)^0*1 + (-2)^1*1 + (-2)^2*0 + (-2)^3*1 + (-2)^4*1 है।

+7

क्या आपने http://en.wikipedia.org/wiki/Negative_base#Calculation देखा है? – kennytm

उत्तर

9

एल्गोरिदम का वर्णन http://en.wikipedia.org/wiki/Negative_base#Calculation में किया गया है। असल में, आप शेष को सकारात्मक आधार के मामले के रूप में चुनते हैं और सुनिश्चित करते हैं कि शेष गैर-ऋणात्मक और न्यूनतम है।

7 = -3*-2 + 1 (least significant digit) 
-3 = 2*-2 + 1 
2 = -1*-2 + 0 
-1 = 1*-2 + 1 
1 = 0*-2 + 1 (most significant digit) 
3

बस मेरे दो सेंट (सी #):

public static int[] negaBynary(int value) 
{ 
    List<int> result = new List<int>(); 

    while (value != 0) 
    { 
     int remainder = value % -2; 
     value = value/-2; 

     if (remainder < 0) 
     { 
      remainder += 2; 
      value += 1; 
     } 

     Console.WriteLine (remainder); 
     result.Add(remainder); 
    } 

    return result.ToArray(); 
} 
1

एक विधि बहुत अधिक कुशल है कि (Librik/Szudzik/Schr ö ppel को आरोपित) नहीं है:

uint64_t negabinary(int64_t num) { 
    const uint64_t mask = 0xAAAAAAAAAAAAAAAA; 
    return (mask + num)^mask; 
} 

रूपांतरण विधि और इसके विपरीत को this answer में अधिक विस्तार से वर्णित किया गया है।

संबंधित मुद्दे