twos-complement

Co to jest "dopełnienie 2"?

Jestem na kursie systemów komputerowych i miałem zmagania , częściowo, z dwójką . Chcę to zrozumieć, ale wszystko, co przeczy ... nych i odwrotnie), operacje bitowe i operacje bitowe. Liczę na jasną i zwięzłą definicję , łatwo zrozumiałą dla programisty.

Dlaczego preferujemy dopełnienie dwójki zamiast znaku i wielkości dla liczb podpisanych?

Jestem tylko ciekaw, czy jest jakiś powód, dla którego aby reprezentować -1 w binarnym, używa się dopełniacza two: przerzucan ... e jest binarne 1 z pierwszym bitem jako znacznikiem ujemnym. Zastrzeżenie: nie polegam na arytmetyce binarnej w mojej pracy!

W jaki sposób liczby całkowite są wewnętrznie reprezentowane na poziomie bitów w Javie?

Próbuję zrozumieć, w jaki sposób Java przechowuje wewnętrznie liczbę całkowitą. Wiem, że wszystkie Java primitive integers są ... są przechowywane w dwóch dopełnienie i jedna odpowiedź mówi, że tylko liczby ujemne są przechowywane jako dopełnienie dwóch.

~x + ~ y = = ~ (x + y) jest zawsze fałszywe?

Czy ten kod zawsze ocenia się na false? Obie zmienne są dopełnieniem dwóch podpisanych intów. ~x + ~y == ~(x + y) Wydaje m ... tawienie równania, aby znaleźć rozwiązania warunku? Czy Zamiana jednego na drugi spowoduje podstępny błąd w moim programie?

Operator bitowy not

Dlaczego operacja bitowa (~0); wypisuje -1 ? W systemie binarnym Nie 0 powinno być 1 . dlaczego ?

Dlaczego -(-2147483648) = - 2147483648 w 32-bitowej maszynie?

Myślę, że pytanie jest oczywiste, myślę, że prawdopodobnie ma to coś wspólnego z przepełnieniem, ale nadal nie do końca rozumiem. Co się dzieje, bitowo, pod maską? Dlaczego -(-2147483648) = -2147483648 (przynajmniej podczas kompilacji w C)?

Jak memset inicjalizuje tablicę liczb całkowitych przez -1?

Strona Man mówi o memset: #include <string.h> void *memset(void *s, int c, size_t n) Funkcja memset() wypełn ... na w 1 bajcie (może się mylę w tym kontekście). Ale w jaki sposób można zainicjalizować b za pomocą -1 (wartość 4 bajtów)?

dlaczego -3= = ~2 W C#

Nie mogę zrozumieć. Dlaczego wyjście jest "równe" Kod: if (-3 == ~2) Console.WriteLine("equal"); else Console.WriteLine("not equal"); Wyjście: equal

podpisz zmiany podczas przechodzenia z int do float i z powrotem

Rozważ następujący kod, który jest SSCCE mojego rzeczywistego problemu: #include <iostream> int roundtrip(int x) { ... t; 2147483520 2147483584 -> 2147483647 Czy zespół g++ naprawił w międzyczasie błąd, czy oba wyjścia są w pełni poprawne?