Czesc mam pewien problem z zadaniem. Mam pewien algorytm to policzenia, ta czesc kodu wykonalem wiec nie musze tutaj wrzucac, ale mam problem z ostatnim etapem tego zadania. A mianowicie musze zamienic liczbe decymalna na ciag binarny (z uwzglednieniem bitu znaku) do minimu. Czyli niepotrzebne bity wyrzucamy a zostawiamy tylko pierwszy (0 lub 1 w zaleznosci czy liczba jest ujemna czy dodatnia).
Z liczbami dodatnimi jest mniejszy problem bo wystarczy na koncu dodac "0"
i bedzie ok, ale z negatywnymi nie jestem pewien czy dobrze to robie.
Drugi problem jest z naprawde ogromnymi liczbami. Liczba sięga wartosci 1.59219793970915e+38
. Szukalem po necie cos odnosnie tego, ale niestety nie moge znalezc dobrej odpowiedzi.
Pierwszy kawalek kodu wygladal tak (bez duzych liczb):
static string toBinary(int number) {
if (number < 0)
{
string binary = Convert.ToString(number, 2);
int makePositive = Math.Abs(number);
string positiveBinary = Convert.ToString(makePositive, 2);
int strip = positiveBinary.Length + 1;
binary = binary.Substring(Math.Max(binary.Length - strip, 0)).PadLeft(strip, '0');
return binary;
}
else
{
string binary = Convert.ToString(number, 2);
return "0" + binary;
}
}
static void Main(string[] args) {
int n = 72;
int n2 = -72;
string binaryN = toBinary(n);
string binaryN2 = toBinary(n2);
}
Czy dobrze rozumiem zadanie i liczby negatywne zamieniam prawidlowo ? Bo dodatnie chyba jest ok..
Nie obsluguje tutaj tych duzych liczb, widzialem cos z BitConverter.DoubleToInt64Bits()
ale nie wiem jak to ugryzc.
Z gory dziekuje za pomoc