Разработка java | SEclub.org
Разработка java
Все новые
¤ZeroX¤, seclub.org/forum/goto/11628507/ - боюсь, что такой в природе не существует...

Ссылка на пост
Всего сообщений: 7795
*
ImIeee
31 июл 2010 в 08:14
DDDEN!SSS, seclub.org/forum/goto/11610367/ - на viewport m3g похоже никак не реагирует, на камеру реагирует, но непонятно как :).
*
Malcolm
31 июл 2010 в 18:04
cHeRsAnYa1, неграмотно там, кстати, написано. Приложения действительно пишутся на Java, но это не Java-приложения. И приложения там целиком на C не напишешь, все равно определенная часть будет на Java.
*
KiFFiR
1 авг 2010 в 06:11
¤ZeroX¤, seclub.org/forum/goto/11628507/ - боюсь, что такой в природе не существует...
1 авг 2010 в 06:12 / KiFFiR (1)
*
ZeroX
1 авг 2010 в 12:14
KiFFiR, почему? А пдф в тхт сконвертировать нельзя?
*
KiFFiR
1 авг 2010 в 12:53
¤ZeroX¤, тот pdf, что в инете - отсканированная книжка. Текста там нет.
*
DDDENISSS
2 авг 2010 в 11:02
Когда я делаю первый бит равным нулю(делаю число положительным) таким способом "i & 0x7fffffff", то меняется не только знак, но и число. не пойму почему число меняется при смене первого бита?
2 авг 2010 в 11:07 / DDDENISSS (5)
*
KiFFiR
2 авг 2010 в 11:33
DDDEN!SSS, запусти такой пример:
System.out.println(Integer.toBinaryString(-20));
System.out.println(Integer.toBinaryString(20));
Явно не одним старшим битом отличаются. )))
*
DDDENISSS
2 авг 2010 в 11:51
KiFFiR, это ясно. Но почему? Везде пишут, что один бит отвечает за знак, значит при его изменении должнен меняться только знак.
мне щас негда запустить.
*
Malcolm
2 авг 2010 в 12:02
DDDEN!SSS, по последнему биту действительно можно определить знак, но это не означает, что остальные биты у положительных и отрицательных чисел совершенно идентичны.
Чтобы понять, почему так происходит, надо знать, как располагается диапазон значений. Представь, что мы к 0 прибавляем единицы. От 00000000 (0) до 01111111 (127) никаких чудес не будет. Затем, если прибавить еще единицу, получится число 10000000, соответствующее -128. Затем, если и дальше прибавлять единицу, то мы постепенно придем к 11111111, что соответствует -1. Если прибавить единицу еще раз, получится 0.
Если бы был сделан знак отдельно, то при прибавлении к отрицательному числу единицы число бы не увеличивалось, а уменьшалось, что неудобно, и еще существовал бы -0. А еще такое хранение позволяет без особых проблем хранить беззнаковые числа в переменных со знаком.
*
DDDENISSS
2 авг 2010 в 12:42
Malcolm, ну это если диапазона не хватает. А если интежер и 20 и -20. Там диапазона должно хватить.
*
DDDENISSS
2 авг 2010 в 16:20
А как происходит смена знака i=-i ? Что там происходит кроме замены первого бита? А можно где-то почитать про способы оптимизации с помощью побитовых операций?
*
Malcolm
2 авг 2010 в 17:28
DDDEN!SSS, нет, смысл в том, что беззнаковые и знаковые переменные - это одни и те же числа, просто интрепретируются по-разному. Допустим, что будет, если записать 129 в знаковую переменную? Да ничего, просто она по умолчанию напечатается в строку как -127. Если прибавить единицу, работая как с числом со знаком, а потом прочитать как беззнаковое, получится 130, как и предполагалось. Работа с числами со знаком ничем от беззнаковых не отличается.
А если записать 129 по той схеме, запишется как -1 (10000001). Если с ним начать работать как с числом со знаком, то при прибавлении единицы получится -0, и в беззнаковом представлении это будет число 128 (10000000). Так с числами сложнее работать.
На самом деле, твой метод, например, применяется в числах с плавающей запятой. Там последний бит - знак, а остальные поделены между значащей частью и экспонентой. Но с этими числами и операции значительно сложнее.
Кстати, для смены знака нужно инвертировать биты и прибавить единицу.
Для полноценного использования разделов сайта войдите или зарегистрируйтесь.
Общие вопросы | Загрузки Seclub | Форум | Главная
18+ © Seclub.org 2003-2026