Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Беззнаковые числа (а всё таки почему их нет в Яве)? / 25 сообщений из 35, страница 1 из 2
05.05.2006, 11:28:50
    #33709454
unicornmirage
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Беззнаковые числа (а всё таки почему их нет в Яве)?
Здравствуйте, уважаемые участники форума и знатоки платформы Java.

Довольно часто мне приходится сталкиваться с проблемой - отсутствия в Java беззнакового int. И я не могу понять почему исключили данный (весьма удобный) тип. Например, также очень часто хотелось бы в программах использовать беззнаковый byte - и его тоже нет..
Почему так сделано? Есть ли этому обоснование?
...
Рейтинг: 0 / 0
05.05.2006, 11:48:45
    #33709548
Sarin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Беззнаковые числа (а всё таки почему их нет в Яве)?
Насчёт обоснования не знаю, но жить без это можно.

Хотя я согласен что в общем-то байт должен быть не от -128 до 127, а от 0 до 255
...
Рейтинг: 0 / 0
05.05.2006, 11:58:18
    #33709612
unicornmirage
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Беззнаковые числа (а всё таки почему их нет в Яве)?
лучше еслибы он был и тем и другим (беззнаковым или знаковым когда нужно)
...
Рейтинг: 0 / 0
05.05.2006, 12:18:31
    #33709719
Kachalov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Беззнаковые числа (а всё таки почему их нет в Яве)?
Как беззнаковый целочисленный тип можно использовать тип char (если очень хочется):
Код: plaintext
1.
2.
    char  c= 48 ;
   c++;
...
Рейтинг: 0 / 0
05.05.2006, 12:23:32
    #33709745
unicornmirage
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Беззнаковые числа (а всё таки почему их нет в Яве)?
KachalovКак беззнаковый целочисленный тип можно использовать тип char (если очень хочется):
Код: plaintext
1.
2.
    char  c= 48 ;
   c++;

нет, это не пойдет...
...
Рейтинг: 0 / 0
05.05.2006, 13:37:34
    #33710103
А.Грасоff™
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Беззнаковые числа (а всё таки почему их нет в Яве)?
unicornmirageЕсть ли этому обоснование?беззнаковый тип можно имитировать :)

http://www.intuit.ru/department/se/pbmsu/8/3.html
Следует по возможности избегать беззнаковых типов, поскольку арифметика
беззнаковых чисел не на всех компьютерах реализована одинаково и из-за этого
при переносе программы с одной платформы на другую могут возникнуть проблемы.
По этой причине в языке Java беззнаковые числа запрещены.
...
Рейтинг: 0 / 0
05.05.2006, 14:03:01
    #33710234
Sarin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Беззнаковые числа (а всё таки почему их нет в Яве)?
KachalovКак беззнаковый целочисленный тип можно использовать тип char (если очень хочется):
Код: plaintext
1.
2.
    char  c= 48 ;
   c++;

Яб не рискнул. Тип char - кодовая единица. Сколько он байтов будет - загадка.
...
Рейтинг: 0 / 0
05.05.2006, 14:08:17
    #33710263
NotGonnaGetUs
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Беззнаковые числа (а всё таки почему их нет в Яве)?
unicornmirageЗдравствуйте, уважаемые участники форума и знатоки платформы Java.

Довольно часто мне приходится сталкиваться с проблемой - отсутствия в Java беззнакового int. И я не могу понять почему исключили данный (весьма удобный) тип. Например, также очень часто хотелось бы в программах использовать беззнаковый byte - и его тоже нет..
Почему так сделано? Есть ли этому обоснование?

Я один такой тупой идиот, что не может придумать зачем нужны такие типы данных?


Научите, где без этого нельзя прожить или это вызвает большие затрудение, плз.
...
Рейтинг: 0 / 0
05.05.2006, 14:09:28
    #33710267
NotGonnaGetUs
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Беззнаковые числа (а всё таки почему их нет в Яве)?
SarinЯб не рискнул. Тип char - кодовая единица. Сколько он байтов будет - загадка.
16bit.
Это прописано в спецификации языка.
...
Рейтинг: 0 / 0
05.05.2006, 15:03:34
    #33710547
unicornmirage
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Беззнаковые числа (а всё таки почему их нет в Яве)?
NotGonnaGetUs

Я один такой тупой идиот, что не может придумать зачем нужны такие типы данных?
Научите, где без этого нельзя прожить или это вызвает большие затрудение, плз.
я просто спросил - зачем брать это так близко к сердцу...
у меня были пару задач в которых пришлось применять другие подходы (с unsigned int например было бы проще) - все они были связаны с битовыми операциями... и ничего - волосы не рвал на голове, но вопросы возникли. вот и всё.
...
Рейтинг: 0 / 0
05.05.2006, 15:16:08
    #33710603
NotGonnaGetUs
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Беззнаковые числа (а всё таки почему их нет в Яве)?
unicornmirageя просто спросил - зачем брать это так близко к сердцу...
у меня были пару задач в которых пришлось применять другие подходы (с unsigned int например было бы проще) - все они были связаны с битовыми операциями... и ничего - волосы не рвал на голове, но вопросы возникли. вот и всё.
Битовым операциям на знаковость откровенно положить, если не использовать знаковый сдвиг.

Н-р, в заковом int можно спокойно хранить argb (по 8bit на компонент).
Чем unsignment int тут помог бы?
...
Рейтинг: 0 / 0
05.05.2006, 23:58:44
    #33711779
unicornmirage
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Беззнаковые числа (а всё таки почему их нет в Яве)?
NotGonnaGetUs
Н-р, в заковом int можно спокойно хранить argb (по 8bit на компонент).
Чем unsignment int тут помог бы?
я понял Вас - использование ббеззнаковых - это дело стародавней привычки :) тем не менее все равно спасибо за откровение.. некоторые вопросы в теме помогли для дальнейшего осмысления.
...
Рейтинг: 0 / 0
06.05.2006, 00:19:29
    #33711798
Sarin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Беззнаковые числа (а всё таки почему их нет в Яве)?
Вообще, имхо, беззнаковые числа нужны. Например храние цветов. По три байта на пиксель. Как тут с беззнеакоковыми быть? Можно, конечно. Но неудобно.
...
Рейтинг: 0 / 0
06.05.2006, 00:42:16
    #33711810
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Беззнаковые числа (а всё таки почему их нет в Яве)?
http://www.intuit.ru/department/se/pbmsu/8/3.html
Следует по возможности избегать беззнаковых типов, поскольку арифметика
беззнаковых чисел не на всех компьютерах реализована одинаково и из-за этого
при переносе программы с одной платформы на другую могут возникнуть проблемы.
По этой причине в языке Java беззнаковые числа запрещены.


Довольно странное обоснование. Что-ж давайте запретим на всякий
случай double, потому-как не на всех мобилках он реализован
аппаратно.

P.S. Почему-то в стандартах CLR на этот аспект забили.

P.P.S. Наверное брали равнение на флагманские CPU.
Или просто было пох..й.
...
Рейтинг: 0 / 0
06.05.2006, 12:01:55
    #33712652
Partisan M
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Беззнаковые числа (а всё таки почему их нет в Яве)?
Беззнаковых чисел нет потому что авторы языка решили, что они не нужны. Так оно и есть. Побитовые операции всё равно существуют и знаковый разряд в них участвует, так что разницы нет - что знаковое оно что беззнаковое (за исключением операций >> и >>>). Ещё в других языках беззнаковые числа используются для записи адресов памяти, что к Java неприменимо. Каков диапазон байта -128 - 127 или 0 - 255 - не имеет практического значения (для преобразования байтов в символы и обратно есть функции), но для переносимости программ желательно чтоб был только один из этих вариантов, что в Java обеспечивается. В общем язык Java не дураки придумали.
...
Рейтинг: 0 / 0
06.05.2006, 21:30:30
    #33714106
Кувалдин Роман
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Беззнаковые числа (а всё таки почему их нет в Яве)?
SarinВообще, имхо, беззнаковые числа нужны. Например храние цветов. По три байта на пиксель. Как тут с беззнеакоковыми быть? Можно, конечно. Но неудобно.

А что мешает? Javadoc:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
public Color(int rgb)

Creates an opaque sRGB color with the specified combined RGB value consisting of the red component in bits 16-23, the green component in bits 8-15, and the blue component in bits 0-7. The actual color used in rendering depends on finding the best match given the color space available for a particular output device. Alpha is defaulted to 255.

Parameters:rgb - the combined RGB components

See Also:ColorModel.getRGBdefault(), getRed(), getGreen(), getBlue(), getRGB()
...
Рейтинг: 0 / 0
06.05.2006, 21:31:56
    #33714107
Кувалдин Роман
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Беззнаковые числа (а всё таки почему их нет в Яве)?
Упс, фиксед-поля не обрезаются...

======================
- Я подхожу к клетке с медведем панда...
Видите, какие у него черные круги под глазами?!
Медведь панда как бы всем своим видом говорит нам: "Не бухайте!"
======================
...
Рейтинг: 0 / 0
06.05.2006, 22:20:07
    #33714145
sysmanx
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Беззнаковые числа (а всё таки почему их нет в Яве)?
А как например если я хочю работать с витами и мне на знак плевать , мне надо скачать к примеру из потока 11 бит, поскольку сложилось исторически так что работаем по байтно(8 бит (хотя движение к примеру AMD64 говорит о том что байты в будующем объединят в какойнибудь гипервайт:) )), то я должен читать по байтно и сдвигом вытаскивать биты, а тут ещё знаки какието в НЕТИПИЗИРОВАННЫХ данных. Получается работаем с информацией, а приходится возится с преобразованием типа.
Я считаю что без знаковый тип причёт размера в один байт должен быть!.
...
Рейтинг: 0 / 0
07.05.2006, 00:18:16
    #33714234
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Беззнаковые числа (а всё таки почему их нет в Яве)?
В принципе, эта проблема выглядит так: если функция
может вернуть целое число 2147483648, то для представления
результата желательно описать ее прототип как public
static long
, или заморачиватся с преобразованием диапазона,
при обработке результата что в целом не может не напрягать
девелопера.
...
Рейтинг: 0 / 0
07.05.2006, 12:38:08
    #33714423
Миша Оно
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Беззнаковые числа (а всё таки почему их нет в Яве)?
sysmanxА как например если я хочю работать с витами и мне на знак плевать , мне надо скачать к примеру из потока 11 бит, поскольку сложилось исторически так что работаем по байтно(8 бит (хотя движение к примеру AMD64 говорит о том что байты в будующем объединят в какойнибудь гипервайт:) )), то я должен читать по байтно и сдвигом вытаскивать биты, а тут ещё знаки какието в НЕТИПИЗИРОВАННЫХ данных. Получается работаем с информацией, а приходится возится с преобразованием типа.
Я считаю что без знаковый тип причёт размера в один байт должен быть!.

Для начала нужно опеределить с витами, битами или байтами или гипервайтами ты собрался работать.

Судя по "ещё знаки какието в НЕТИПИЗИРОВАННЫХ данных" вы ни разу не пытались делать то, о чём говорите.
Если это не так, приведите пример кода, где вы "возитесь с преобразованием типа".

byte, short при вычислениях _всегда_ приводятся к типу int (за исключением операций ++).
...
Рейтинг: 0 / 0
08.05.2006, 01:15:37
    #33714844
Fear&Loathing
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Беззнаковые числа (а всё таки почему их нет в Яве)?
sysmanxЯ считаю что без знаковый тип причёт размера в один байт должен быть!.Хорошо хоть щитать научился, потом, когда песать научишься, приходи мы тебя послушаем. А если "знаковый тип причёт размера в один байт должен быть" то возьми, да создай свой язык SYSMANX, тебе никто же не мешает. Зачем тебе нелепый язык, с помощью которого разрабатывают более 5 млн программистов а пользуются их программами больше миллиарда человек?
...
Рейтинг: 0 / 0
08.05.2006, 01:58:44
    #33714857
unicornmirage
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Беззнаковые числа (а всё таки почему их нет в Яве)?
Fear&Loathing, вообще то это уже следствие - былобы весьма интересно узнать именно причины!
все приведенные ответы в теме посвящены одному - "что можно обойтись беззнаковыми" -
Да и в СИ можно обойтись если есть желание - это не ответ. В начале вопроса я четко спросил - почему так сделано в Java? с какой целью? почему?
если нечего ответить - то не надо переходить на личности - неприятно слушать подобные ответы - что мол создатели java не дураки а это ты дурак наивный задаешь вопросы - когда миллионы программистов програмируют.. не надо пиарить, плиз.
...
Рейтинг: 0 / 0
08.05.2006, 02:30:14
    #33714860
sysmanx
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Беззнаковые числа (а всё таки почему их нет в Яве)?
to Миша Оно:
касательно кода то писал и некаких проблем нет, но было бы приятней если бы при написании знал что бита знака нет (Тоесть я хочю сказать что действия которые делал не отражаются в типе int (т.е. работая с int я думал о byte :) )).

касательно:
Миша Оноbyte, short при вычислениях _всегда_ приводятся к типу int (за исключением операций ++).

А при преобразование типа не создаётся ли новая переменная большего размера.(если наоборот то возможно что нет. А в большию сторону нужно, потому что размер int больше byte и нужно гдето хранить пустые байты(а то читать и переменной будем белиберду другой переменной)).

to Fear&Loathing:
В мире пользователей больше чем программистов!. И что теперь быть юзверем.
К тамуже если человек не думал как делать нужно, а делал как делают все, то му бы так и бегали на четвереньках и общались бы примитивными звуками. Всё чем пользуется человек сегодня создано людьми которым не хотелось делать так как делалось всегда, а хотелось подумать как правельнее!.
Да кстати насчёт языка неплахая мысль :) (На этот счёт можно размашлять и размышлять).
...
Рейтинг: 0 / 0
08.05.2006, 12:30:09
    #33715038
Миша Оно
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Беззнаковые числа (а всё таки почему их нет в Яве)?
sysmanxto Миша Оно:
касательно кода то писал и некаких проблем нет, но было бы приятней если бы при написании знал что бита знака нет (Тоесть я хочю сказать что действия которые делал не отражаются в типе int (т.е. работая с int я думал о byte :) )).

Отсюда выводы:
- отсутствие беззнаковых типов никак не мешает
- работать с int, а думать о byte, - странное извращение

sysmanx Миша Оноbyte, short при вычислениях _всегда_ приводятся к типу int (за исключением операций ++).

А при преобразование типа не создаётся ли новая переменная большего размера.

Типы меньшего размера чем int реализованы в jvm как int с ограничением на диапазон значений. Касты byte2int/short2int/char2int и обратно требует только проверки диапазона значений без каких-либо выделений памяти.
...
Рейтинг: 0 / 0
08.05.2006, 14:21:09
    #33715129
unicornmirage
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Беззнаковые числа (а всё таки почему их нет в Яве)?
Миша Оно
- работать с int, а думать о byte, - странное извращение


иногда хочется задумываться, например в таких задачах - есть у нас в потоке данных массив байт, его можно прочитать за один раз в буфер - InputStream.read(byte[]), если нам надо чтобы это был массив unsigned byte[] - нужно потрудиться еще и преобразовать этот массив byte[] в массив int[] - разве нет? :) заместо одной операции чтения массива мы имеем две -чтение и преобразование..
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Беззнаковые числа (а всё таки почему их нет в Яве)? / 25 сообщений из 35, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]