Перейти к содержимому

Фото
- - - - -

java тип данных long


  • Вы не можете создать новую тему
  • Please log in to reply
5 ответов в этой теме

#1 ruslan)

ruslan)
  • Постоялец
  • 1 795 сообщений

Отправлено 04 Ноябрь 2009 - 19:46

я Чтот совсем не доганяю long может принимать значения до 21 знака
вписываю в long обычный исикукод 37804060233 пишет ошибку и дает вписать максимум только 37804060
что за фигня? :huh: или как записать это правильно?

Сообщение изменено: Ёлкин-палкин (04 Ноябрь 2009 - 19:49 )

  • 0

#2 Alexano

Alexano
  • Пользователь
  • 109 сообщений

Отправлено 04 Ноябрь 2009 - 21:29

long long (int64) нужно использовать, просто long не достаточно. Дело в том, что нужно смотреть не по знакам, а по значениям числа. Допустим 111111 и 999999 - количество символов одинаковое, а память под вычесления расходуется по разному.

Сообщение изменено: Alexano (04 Ноябрь 2009 - 21:40 )

  • 0

#3 ParadoxL

ParadoxL
  • Постоялец
  • 4 756 сообщений
  • Откуда:Edinburg

Отправлено 04 Ноябрь 2009 - 21:39

Ёлкин-палкин, вообще-то максимум 2^64 со знаком (/2)... и это [-9,223,372,036,854,775,808;9,223,372,036,854,775,807] ... 19 знаков ... но вопрос не про это :)))

буковку l (эл) постав в конце и будет тебе счатье :)

long isik = 37804060233l;


long long нужно использовать, просто long не достаточно


правильно пишется ... loong ... количество о ... говорит сколько раз по 2^64 выделять подряд ... взято из C++ ... там примитивные массивы так же работают ... подрят выделяется память и можено прагать по &+ :)

ЗЫ! Учите мат часть товарищщи...
  • 0
Victoria nulla est, Quam quae confessos animo quoque subjugat hostes ...
Верю в смерть после жизни, любовь после секса и в крем после бритья ...

#4 ParadoxL

ParadoxL
  • Постоялец
  • 4 756 сообщений
  • Откуда:Edinburg

Отправлено 04 Ноябрь 2009 - 21:54

...что за фигня? :huh: или как записать это правильно?


Объясню поподробнее ... JRE по умолчанию сперва выделяет память, а потом присваивает этому адресу памяти какое-нить имя ... то есть при запуске ... интерпретатор ... не какой длины это число ... и использует по умолчанию 2^32 ... что соответует int ... потом только присваивает ... это какой-то переменной ... когда переменная меньше int, например byte ... JRE просто обрубает старшие разряды до разрядности и всё пучком ... другое дело, когда разрядоность переменной больше может произойти потеря данных ... из-за тот страбалдет компилятор (который байт код создает) ... и из-за этого ему надо указывать, что твое число другой разрядности ...



ЗЫ! *** Обрасывает старшие разряды ... через привидение ...
  • 0
Victoria nulla est, Quam quae confessos animo quoque subjugat hostes ...
Верю в смерть после жизни, любовь после секса и в крем после бритья ...

#5 ruslan)

ruslan)
  • Постоялец
  • 1 795 сообщений

Отправлено 04 Ноябрь 2009 - 22:36

Incubo, спасибо, я видел еще hexdecimal шифровку, но так и не понял подойдет она или нет.
  • 0

#6 ParadoxL

ParadoxL
  • Постоялец
  • 4 756 сообщений
  • Откуда:Edinburg

Отправлено 04 Ноябрь 2009 - 23:04

Ёлкин-палкин, ну в каком исчислении ты пишешь разницы нет ... 0x ... или другой ... обычно когда работают с низким уровнем конечно доки все на хексы заточены ... да они вообще проще для понимания. Хотя не всем .... но думаю вообще проще хранить isik в строке ... так как тебе всё равно придется его проверять на истинность ... и там важно контрольный байт вычислять ... который берется по смещению ...
  • 0
Victoria nulla est, Quam quae confessos animo quoque subjugat hostes ...
Верю в смерть после жизни, любовь после секса и в крем после бритья ...