|
|
|
Беззнаковые числа (а всё таки почему их нет в Яве)?
|
|||
|---|---|---|---|
|
#18+
Здравствуйте, уважаемые участники форума и знатоки платформы Java. Довольно часто мне приходится сталкиваться с проблемой - отсутствия в Java беззнакового int. И я не могу понять почему исключили данный (весьма удобный) тип. Например, также очень часто хотелось бы в программах использовать беззнаковый byte - и его тоже нет.. Почему так сделано? Есть ли этому обоснование? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2006, 11:28:50 |
|
||
|
Беззнаковые числа (а всё таки почему их нет в Яве)?
|
|||
|---|---|---|---|
|
#18+
Насчёт обоснования не знаю, но жить без это можно. Хотя я согласен что в общем-то байт должен быть не от -128 до 127, а от 0 до 255 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2006, 11:48:45 |
|
||
|
Беззнаковые числа (а всё таки почему их нет в Яве)?
|
|||
|---|---|---|---|
|
#18+
лучше еслибы он был и тем и другим (беззнаковым или знаковым когда нужно) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2006, 11:58:18 |
|
||
|
Беззнаковые числа (а всё таки почему их нет в Яве)?
|
|||
|---|---|---|---|
|
#18+
Как беззнаковый целочисленный тип можно использовать тип char (если очень хочется): Код: plaintext 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2006, 12:18:31 |
|
||
|
Беззнаковые числа (а всё таки почему их нет в Яве)?
|
|||
|---|---|---|---|
|
#18+
KachalovКак беззнаковый целочисленный тип можно использовать тип char (если очень хочется): Код: plaintext 1. 2. нет, это не пойдет... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2006, 12:23:32 |
|
||
|
Беззнаковые числа (а всё таки почему их нет в Яве)?
|
|||
|---|---|---|---|
|
#18+
unicornmirageЕсть ли этому обоснование?беззнаковый тип можно имитировать :) http://www.intuit.ru/department/se/pbmsu/8/3.html Следует по возможности избегать беззнаковых типов, поскольку арифметика беззнаковых чисел не на всех компьютерах реализована одинаково и из-за этого при переносе программы с одной платформы на другую могут возникнуть проблемы. По этой причине в языке Java беззнаковые числа запрещены. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2006, 13:37:34 |
|
||
|
Беззнаковые числа (а всё таки почему их нет в Яве)?
|
|||
|---|---|---|---|
|
#18+
KachalovКак беззнаковый целочисленный тип можно использовать тип char (если очень хочется): Код: plaintext 1. 2. Яб не рискнул. Тип char - кодовая единица. Сколько он байтов будет - загадка. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2006, 14:03:01 |
|
||
|
Беззнаковые числа (а всё таки почему их нет в Яве)?
|
|||
|---|---|---|---|
|
#18+
unicornmirageЗдравствуйте, уважаемые участники форума и знатоки платформы Java. Довольно часто мне приходится сталкиваться с проблемой - отсутствия в Java беззнакового int. И я не могу понять почему исключили данный (весьма удобный) тип. Например, также очень часто хотелось бы в программах использовать беззнаковый byte - и его тоже нет.. Почему так сделано? Есть ли этому обоснование? Я один такой тупой идиот, что не может придумать зачем нужны такие типы данных? Научите, где без этого нельзя прожить или это вызвает большие затрудение, плз. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2006, 14:08:17 |
|
||
|
Беззнаковые числа (а всё таки почему их нет в Яве)?
|
|||
|---|---|---|---|
|
#18+
SarinЯб не рискнул. Тип char - кодовая единица. Сколько он байтов будет - загадка. 16bit. Это прописано в спецификации языка. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2006, 14:09:28 |
|
||
|
Беззнаковые числа (а всё таки почему их нет в Яве)?
|
|||
|---|---|---|---|
|
#18+
NotGonnaGetUs Я один такой тупой идиот, что не может придумать зачем нужны такие типы данных? Научите, где без этого нельзя прожить или это вызвает большие затрудение, плз. я просто спросил - зачем брать это так близко к сердцу... у меня были пару задач в которых пришлось применять другие подходы (с unsigned int например было бы проще) - все они были связаны с битовыми операциями... и ничего - волосы не рвал на голове, но вопросы возникли. вот и всё. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2006, 15:03:34 |
|
||
|
Беззнаковые числа (а всё таки почему их нет в Яве)?
|
|||
|---|---|---|---|
|
#18+
unicornmirageя просто спросил - зачем брать это так близко к сердцу... у меня были пару задач в которых пришлось применять другие подходы (с unsigned int например было бы проще) - все они были связаны с битовыми операциями... и ничего - волосы не рвал на голове, но вопросы возникли. вот и всё. Битовым операциям на знаковость откровенно положить, если не использовать знаковый сдвиг. Н-р, в заковом int можно спокойно хранить argb (по 8bit на компонент). Чем unsignment int тут помог бы? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2006, 15:16:08 |
|
||
|
Беззнаковые числа (а всё таки почему их нет в Яве)?
|
|||
|---|---|---|---|
|
#18+
NotGonnaGetUs Н-р, в заковом int можно спокойно хранить argb (по 8bit на компонент). Чем unsignment int тут помог бы? я понял Вас - использование ббеззнаковых - это дело стародавней привычки :) тем не менее все равно спасибо за откровение.. некоторые вопросы в теме помогли для дальнейшего осмысления. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2006, 23:58:44 |
|
||
|
Беззнаковые числа (а всё таки почему их нет в Яве)?
|
|||
|---|---|---|---|
|
#18+
Вообще, имхо, беззнаковые числа нужны. Например храние цветов. По три байта на пиксель. Как тут с беззнеакоковыми быть? Можно, конечно. Но неудобно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.05.2006, 00:19:29 |
|
||
|
Беззнаковые числа (а всё таки почему их нет в Яве)?
|
|||
|---|---|---|---|
|
#18+
http://www.intuit.ru/department/se/pbmsu/8/3.html Следует по возможности избегать беззнаковых типов, поскольку арифметика беззнаковых чисел не на всех компьютерах реализована одинаково и из-за этого при переносе программы с одной платформы на другую могут возникнуть проблемы. По этой причине в языке Java беззнаковые числа запрещены. Довольно странное обоснование. Что-ж давайте запретим на всякий случай double, потому-как не на всех мобилках он реализован аппаратно. P.S. Почему-то в стандартах CLR на этот аспект забили. P.P.S. Наверное брали равнение на флагманские CPU. Или просто было пох..й. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.05.2006, 00:42:16 |
|
||
|
Беззнаковые числа (а всё таки почему их нет в Яве)?
|
|||
|---|---|---|---|
|
#18+
Беззнаковых чисел нет потому что авторы языка решили, что они не нужны. Так оно и есть. Побитовые операции всё равно существуют и знаковый разряд в них участвует, так что разницы нет - что знаковое оно что беззнаковое (за исключением операций >> и >>>). Ещё в других языках беззнаковые числа используются для записи адресов памяти, что к Java неприменимо. Каков диапазон байта -128 - 127 или 0 - 255 - не имеет практического значения (для преобразования байтов в символы и обратно есть функции), но для переносимости программ желательно чтоб был только один из этих вариантов, что в Java обеспечивается. В общем язык Java не дураки придумали. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.05.2006, 12:01:55 |
|
||
|
Беззнаковые числа (а всё таки почему их нет в Яве)?
|
|||
|---|---|---|---|
|
#18+
SarinВообще, имхо, беззнаковые числа нужны. Например храние цветов. По три байта на пиксель. Как тут с беззнеакоковыми быть? Можно, конечно. Но неудобно. А что мешает? Javadoc: Код: plaintext 1. 2. 3. 4. 5. 6. 7. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.05.2006, 21:30:30 |
|
||
|
Беззнаковые числа (а всё таки почему их нет в Яве)?
|
|||
|---|---|---|---|
|
#18+
Упс, фиксед-поля не обрезаются... ====================== - Я подхожу к клетке с медведем панда... Видите, какие у него черные круги под глазами?! Медведь панда как бы всем своим видом говорит нам: "Не бухайте!" ====================== ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.05.2006, 21:31:56 |
|
||
|
Беззнаковые числа (а всё таки почему их нет в Яве)?
|
|||
|---|---|---|---|
|
#18+
А как например если я хочю работать с витами и мне на знак плевать , мне надо скачать к примеру из потока 11 бит, поскольку сложилось исторически так что работаем по байтно(8 бит (хотя движение к примеру AMD64 говорит о том что байты в будующем объединят в какойнибудь гипервайт:) )), то я должен читать по байтно и сдвигом вытаскивать биты, а тут ещё знаки какието в НЕТИПИЗИРОВАННЫХ данных. Получается работаем с информацией, а приходится возится с преобразованием типа. Я считаю что без знаковый тип причёт размера в один байт должен быть!. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.05.2006, 22:20:07 |
|
||
|
Беззнаковые числа (а всё таки почему их нет в Яве)?
|
|||
|---|---|---|---|
|
#18+
В принципе, эта проблема выглядит так: если функция может вернуть целое число 2147483648, то для представления результата желательно описать ее прототип как public static long , или заморачиватся с преобразованием диапазона, при обработке результата что в целом не может не напрягать девелопера. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.05.2006, 00:18:16 |
|
||
|
Беззнаковые числа (а всё таки почему их нет в Яве)?
|
|||
|---|---|---|---|
|
#18+
sysmanxА как например если я хочю работать с витами и мне на знак плевать , мне надо скачать к примеру из потока 11 бит, поскольку сложилось исторически так что работаем по байтно(8 бит (хотя движение к примеру AMD64 говорит о том что байты в будующем объединят в какойнибудь гипервайт:) )), то я должен читать по байтно и сдвигом вытаскивать биты, а тут ещё знаки какието в НЕТИПИЗИРОВАННЫХ данных. Получается работаем с информацией, а приходится возится с преобразованием типа. Я считаю что без знаковый тип причёт размера в один байт должен быть!. Для начала нужно опеределить с витами, битами или байтами или гипервайтами ты собрался работать. Судя по "ещё знаки какието в НЕТИПИЗИРОВАННЫХ данных" вы ни разу не пытались делать то, о чём говорите. Если это не так, приведите пример кода, где вы "возитесь с преобразованием типа". byte, short при вычислениях _всегда_ приводятся к типу int (за исключением операций ++). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.05.2006, 12:38:08 |
|
||
|
Беззнаковые числа (а всё таки почему их нет в Яве)?
|
|||
|---|---|---|---|
|
#18+
sysmanxЯ считаю что без знаковый тип причёт размера в один байт должен быть!.Хорошо хоть щитать научился, потом, когда песать научишься, приходи мы тебя послушаем. А если "знаковый тип причёт размера в один байт должен быть" то возьми, да создай свой язык SYSMANX, тебе никто же не мешает. Зачем тебе нелепый язык, с помощью которого разрабатывают более 5 млн программистов а пользуются их программами больше миллиарда человек? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.05.2006, 01:15:37 |
|
||
|
Беззнаковые числа (а всё таки почему их нет в Яве)?
|
|||
|---|---|---|---|
|
#18+
Fear&Loathing, вообще то это уже следствие - былобы весьма интересно узнать именно причины! все приведенные ответы в теме посвящены одному - "что можно обойтись беззнаковыми" - Да и в СИ можно обойтись если есть желание - это не ответ. В начале вопроса я четко спросил - почему так сделано в Java? с какой целью? почему? если нечего ответить - то не надо переходить на личности - неприятно слушать подобные ответы - что мол создатели java не дураки а это ты дурак наивный задаешь вопросы - когда миллионы программистов програмируют.. не надо пиарить, плиз. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.05.2006, 01:58:44 |
|
||
|
Беззнаковые числа (а всё таки почему их нет в Яве)?
|
|||
|---|---|---|---|
|
#18+
to Миша Оно: касательно кода то писал и некаких проблем нет, но было бы приятней если бы при написании знал что бита знака нет (Тоесть я хочю сказать что действия которые делал не отражаются в типе int (т.е. работая с int я думал о byte :) )). касательно: Миша Оноbyte, short при вычислениях _всегда_ приводятся к типу int (за исключением операций ++). А при преобразование типа не создаётся ли новая переменная большего размера.(если наоборот то возможно что нет. А в большию сторону нужно, потому что размер int больше byte и нужно гдето хранить пустые байты(а то читать и переменной будем белиберду другой переменной)). to Fear&Loathing: В мире пользователей больше чем программистов!. И что теперь быть юзверем. К тамуже если человек не думал как делать нужно, а делал как делают все, то му бы так и бегали на четвереньках и общались бы примитивными звуками. Всё чем пользуется человек сегодня создано людьми которым не хотелось делать так как делалось всегда, а хотелось подумать как правельнее!. Да кстати насчёт языка неплахая мысль :) (На этот счёт можно размашлять и размышлять). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.05.2006, 02:30:14 |
|
||
|
Беззнаковые числа (а всё таки почему их нет в Яве)?
|
|||
|---|---|---|---|
|
#18+
sysmanxto Миша Оно: касательно кода то писал и некаких проблем нет, но было бы приятней если бы при написании знал что бита знака нет (Тоесть я хочю сказать что действия которые делал не отражаются в типе int (т.е. работая с int я думал о byte :) )). Отсюда выводы: - отсутствие беззнаковых типов никак не мешает - работать с int, а думать о byte, - странное извращение sysmanx Миша Оноbyte, short при вычислениях _всегда_ приводятся к типу int (за исключением операций ++). А при преобразование типа не создаётся ли новая переменная большего размера. Типы меньшего размера чем int реализованы в jvm как int с ограничением на диапазон значений. Касты byte2int/short2int/char2int и обратно требует только проверки диапазона значений без каких-либо выделений памяти. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.05.2006, 12:30:09 |
|
||
|
Беззнаковые числа (а всё таки почему их нет в Яве)?
|
|||
|---|---|---|---|
|
#18+
Миша Оно - работать с int, а думать о byte, - странное извращение иногда хочется задумываться, например в таких задачах - есть у нас в потоке данных массив байт, его можно прочитать за один раз в буфер - InputStream.read(byte[]), если нам надо чтобы это был массив unsigned byte[] - нужно потрудиться еще и преобразовать этот массив byte[] в массив int[] - разве нет? :) заместо одной операции чтения массива мы имеем две -чтение и преобразование.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.05.2006, 14:21:09 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=33710603&tid=2129648]: |
0ms |
get settings: |
19ms |
get forum list: |
22ms |
check forum access: |
7ms |
check topic access: |
7ms |
track hit: |
59ms |
get topic data: |
20ms |
get forum data: |
5ms |
get page messages: |
108ms |
get tp. blocked users: |
2ms |
| others: | 374ms |
| total: | 623ms |

| 0 / 0 |
