Size: a a a

2020 August 13

A

Anton in learn.java
かたかわ
лонг в дабл можно кастовать без эксплицитной конверсии, а флоат в инт нельзя 😐
Логика тут похоже не в сохранении точности, а в границе диапазонов чисел:
A float has a range of -3.4e+38 to 3.4e+38 (approx). A long has a range of -9.2e18 to -9.2e18. Since the float has the larger range, it is wider.
источник

DC

Denis Chikanov in learn.java
Anton
Логика тут похоже не в сохранении точности, а в границе диапазонов чисел:
A float has a range of -3.4e+38 to 3.4e+38 (approx). A long has a range of -9.2e18 to -9.2e18. Since the float has the larger range, it is wider.
Ты или плохо читаешь вопрос, или я даже не знаю
источник

DC

Denis Chikanov in learn.java
У него в первом примере целые -> дробные, а во втором дробные -> целые
источник

A

Anton in learn.java
Denis Chikanov
Ты или плохо читаешь вопрос, или я даже не знаю
Не переживай так сильно, все образуется.

Вопрос "Почему?" -  не столько важны детали вопроса, сколько суть решения в дизайне языка - почему long -> double это расширкние, когда и там и там 64 бита.

На мой взгляд, вопрос в понимании слова "widening" в JLS-5.1.2.  
Соответственно и ответ:
Хотя при преобразовании из long во float можно потерять значащие цифры, это все же операция «расширения», потому что диапазон значений float шире.

Из этого логически следует ответ на вторую часть вопроса - почему запрещено неявное сужающее преобразование - оно может потерять не только точность, но и порядок значения:
(double)(long)1e38f
// = 9.223372036854776e18
источник

АП

Артур Петров... in learn.java
public class JavaApplication1 {
   public static void main(String[] args) {
       int bit_number = 0b0111011;
       int set_number = 0b1000000;
       
       int res_number = set_number >>> 4;
       bit_number = bit_number | set_number;
       
       System.out.println(Integer.toBinaryString(bit_number));
       System.out.println(Integer.toBinaryString(res_number));

       System.out.println(res_number);        
   }
}
источник

АП

Артур Петров... in learn.java
Я попробовал сделать то, о чем вы говорили, но у меня сдвиг вправо убирает все нули в начале, хотя я использую оператор из их заполнением.
источник

АП

Артур Петров... in learn.java
Anton
Двигаешь еденичку сдвигом в нужную позицию и OR с числом, где нужно этот бит выставить.
Вот, вот это я пробовал. Из интереса.
источник

АП

Артур Петров... in learn.java
У меня в результате выполнения обычно и изменяеться только первый бит переменной bit_number
источник

NS

Name Schiefer in learn.java
Артур Петров
public class JavaApplication1 {
   public static void main(String[] args) {
       int bit_number = 0b0111011;
       int set_number = 0b1000000;
       
       int res_number = set_number >>> 4;
       bit_number = bit_number | set_number;
       
       System.out.println(Integer.toBinaryString(bit_number));
       System.out.println(Integer.toBinaryString(res_number));

       System.out.println(res_number);        
   }
}
Делай сдвиг еденицы влево
источник

АП

Артур Петров... in learn.java
Все равно не работает, результат тот же.
источник

АП

Артур Петров... in learn.java
Я сменил оператор на <<
источник

АП

Артур Петров... in learn.java
И даже пробовал переместить единицу в переменной set_number в конец
источник

АП

Артур Петров... in learn.java
Но вместо того, чтобы единица перемещалась, в конец просто больше нулей начало записывать
источник

АП

Артур Петров... in learn.java
Вот так вот
источник

АП

Артур Петров... in learn.java
А вот это если я 1 в конец поставил
источник

АП

Артур Петров... in learn.java
Оно получается также 0 в конец кидает
источник

АП

Артур Петров... in learn.java
Просто в начале их откидывает
источник

A

Anton in learn.java
Артур Петров
Просто в начале их откидывает
Вопрос формата печати, а не самих чисел (в десятичном формате так же убираются лидирующие нули):
System.out.println(String.format("%16s", Integer.toBinaryString(0b001)).replace(' ', '0'));
// 0000000000000001
источник

Д

Дима in learn.java
Смотри порядок битов не попутай
источник

CE

Conpl Ewart in learn.java
источник