Witam
Czy jest w JAVA coś takiego jak zmienna bez znaku jak np. unsigned int?
Witam
Czy jest w JAVA coś takiego jak zmienna bez znaku jak np. unsigned int?
Nie
Czym bardziej poznaje JAVE tym bardziej widzę że jest daleko w tyle za C#
W tyle :D :D to jest zwykła decyzja implementacyjna. To nie jest tak że nie ma tam zmiennych unsigned bo ich nie umieli napisać, albo bo są zacofani. Po prostu uznali że są zbędne ;] I ja zresztą też nie widzę gdzie by miały mieć wyższość nad intami ze znakiem ;] Jak pracujesz z dużymi liczbami to kwestia signed/unsigned zwykle cię nie ratuje tak czy siak.
Pytanie brzmi po co? W C#, który miał być konkurencją dla javy, ale ze wszystkimi elementami C++ typy bez znaku mają sens. Wraz ze wszystkimi tego konsekwencjami. W Javie ich nie zaimplementowano ponieważ, znalazły się na "czarnej liście" rzeczy, które są przyczyną bugów. W ten sam sposób potraktowano np. wskaźniki.
To przykład gdzie jest mi to potrzebne.
Mam dwa bajty (buforIn) 19- to bajt starszy , 20-to bajt młodszy, teraz chce zrobić z tego liczbę 2-bajtową
ushort temperature 0x00;
temperature |= Convert.ToUInt16(BuforIn_1[19] << 8);
temperature|= BuforIn_1[20];
Jak to zrobić?
Kod jest napisany w wysokopoziomowym C#, albo Thread.sleep(100) trzeba dawać w try... haha co tam może się stać niespodziewanego
Jeśli chodzi o nieczytelny kod to zależy dla kogo
Przesunięcia bitowe i bitowe ory to faktycznie wysoki poziom :D
Co się może stać? Dokumentacja prawdę ci powie: http://docs.oracle.com/javase/7/docs/api/java/lang/InterruptedException.html
Sens moje wypowiedzi jest taki że w wysokopoziomowym C# można coś takiego zapisać gdy jest to potrzebne.
Co do wyjątków to jeśli programista jest świadomy co może się stać i jeśli wie że to nie nastąpi to i tak bezmyślnie musi napisać try catch
Tak:
Rozwiązanie nr 1 - wrapper: http://docs.guava-libraries.googlecode.com/git/javadoc/com/google/common/primitives/UnsignedInteger.html
Rozwiązanie nr 2 - "traktowanie" int jako unsigned: http://docs.guava-libraries.googlecode.com/git/javadoc/com/google/common/primitives/UnsignedInts.html
vpiotr napisał(a):
Tak:
Rozwiązanie nr 1 - wrapper: http://docs.guava-libraries.googlecode.com/git/javadoc/com/google/common/primitives/UnsignedInteger.html
Rozwiązanie nr 2 - "traktowanie" int jako unsigned: http://docs.guava-libraries.googlecode.com/git/javadoc/com/google/common/primitives/UnsignedInts.html
Dzięki
O dziwo nawet takim mistrzom wysokopoziomowego C# dogodzili w ósemce:
Unsigned Arithmetic Support
Methods were added to the Java Libraries to support unsigned integer arithmetic. Integers are 32-bits numbers out of which 1 bit is reserved for the sign but using these unsigned methods one can use all the 32 bits. Static methods such as parseUnsignedLong, toUnsignedString, divideUnsigned, compareUnsigned were added to the Long class and methods such as divideUnsigned, compareUnsigned, parseUnsignedInt, remainderUnsigned, toUnsignedString were added to the Integer class. These methods are faster than using the BigDecimal and BigInteger for arithmetic opearations as these include optimizations of primitive datatypes.