воскресенье, 29 мая 2011 г.

непонимание3

What will be the output of the following code?

public class StrBld {
 
     public static void main(String[] args) {
         String str = new String("abc");
         StringBuilder stb = new StringBuilder(str);
 
         if (str.equals(stb.toString())) {
             System.out.println("true");
         } else {
             System.out.println("false");
         }
 
         if (str.equals(stb)) {
             System.out.println("true");
         } else {
             System.out.println("false");
         }
     }
 } 
The correct answer is:
true
false 

Операторы сдвига.

Собственно вопрос:

"Byte x is initially equal to 1011
What will be the sign of x after x>>2 operation?"

Немного теории:
------------------------------------------------------------------------------------
Операторы сдвига включают левый сдвиг '<<', знаковый правый сдвиг '>>', и беззнаковый правый сдвиг '>>>' они синтаксически лево-ассоциативны (они следуют слева на право). Операнд с правой стороны оператора сдвига - это значение для сдвига; с правой стороны - операнд, определяющий дистанцию сдвига.

Операнды должны быть примитивных типов, иначе случиться ошибка компиляции. (дальше не асилил...)

Binary numeric promotion (§5.6.2) is not performed on the operands; rather, unary numeric promotion (§) is performed on each operand separately. The type of the shift expression is the promoted type of the left-hand operand.

If the promoted type of the left-hand operand is int, only the five lowest-order bits of the right-hand operand are used as the shift distance. It is as if the right-hand operand were subjected to a bitwise logical AND operator & (§15.22.1) with the mask value 0x1f. The shift distance actually used is therefore always in the range 0 to 31, inclusive.

If the promoted type of the left-hand operand is long, then only the six lowest-order bits of the right-hand operand are used as the shift distance. It is as if the right-hand operand were subjected to a bitwise logical AND operator & (§15.22.1) with the mask value 0x3f. The shift distance actually used is therefore always in the range 0 to 63, inclusive.

At run time, shift operations are performed on the two's complement integer representation of the value of the left operand.
The value of n'<<'s is n left-shifted s bit positions; this is equivalent (even if overflow occurs) to multiplication by two to the power s.

The value of n>>s is n right-shifted s bit positions with sign-extension. The resulting value is ⌊n/2s⌋. For nonnegative values of n, this is equivalent to truncating integer division, as computed by the integer division operator /, by two to the power s.

The value of n>>>s is n right-shifted s bit positions with zero-extension. If n is positive, then the result is the same as that of n>>s; if n is negative, the result is equal to that of the expression (n>>s)+(2<<~s) if the type of the left-hand operand is int, and to the result of the expression (n>>s)+(2L<<~s) if the type of the left-hand operand is long. The added term (2<<~s) or (2L<<~s) cancels out the propagated sign bit. (Note that, because of the implicit masking of the right-hand operand of a shift operator, ~s as a shift distance is equivalent to 31-s when shifting an int value and to 63-s when shifting a long value.)


-----------------------------------------------------------------------------------
В итоге получаем, что оператор >> меняет знаковый бит, поэтому значение 1011 станет 1110 после данной операции.
источник: http://java.sun.com/docs/books/jls/third_edition/html/expressions.html#15.19

непонимание2

public class TestClass {
   public static void main(String[] args) {
      int i = 0;
      i=i++;
      i=i++;
      i=i++;
      System.out.println(i);
    }
} 
Что выведет? правильно 0... поскольку инкремент идет в постфиксной форме...

непонимание1

public class TestClass {
   public static void main(String[] args) {
      int i = 9;
       add(i);
       System.out.println(--i);
    }
 
   public static int add(int i) {
       ++i;
       return i += 1;
    }
 }
Что выведет? правильно 8... Это происходит из-за того, что метод add() принимает на вход примитив int, который передается по значению, а не по ссылке, поэтому после него значение i не изменится...

среда, 25 мая 2011 г.

AMD расширяет линейку профессиональных видеокарт FirePro

Графические ускорители FirePro V5900 (вверху) и V7900 (изображение производителя).
Графические ускорители FirePro V5900 (вверху) и V7900 (изображение производителя).

Компания AMD анонсировала сегодня графические ускорители FirePro V7900 и V5900, предназначенные для использования в медицине, компьютерном моделировании, дизайне и других профессиональных областях.

Обе видеокарты оснащены однослотовой системой охлаждения и комплектуются 2 Гб памяти GDDR5 с 256-битной шиной. Поддерживаются программные интерфейсы DirectX 11 и OpenGL 4.1, а также технология управления энергопотреблением PowerTune и система Eyefinity, позволяющая формировать изображение на нескольких мониторах.
Ускоритель FirePro V7900 насчитывает 1 280 потоковых процессоров. Частота ядра чипа и памяти составляет соответственно 725 и 5 000 МГц. Возможно подключение четырёх дисплеев через разъёмы DisplayPort.
Видеокарта FirePro V5900 имеет 512 потоковых процессоров; частота ядра чипа и памяти — 600 и 2 000 МГц. Есть два выхода DisplaPort и один порт DVI.
По заявлениям AMD, новые ускорители FirePro V7900 обеспечивают более чем двукратный прирост производительности по сравнению с сопоставимыми по классу изделиями конкурентов (имеются в виду карты nVidia Quadro 4000).
Стоимость FirePro V7900 и V5900 составляет соответственно около 1 000 и 700 долларов.

Монитор Philips 273P3L «чувствует», когда остается в одиночестве

Монитор Philips 273P3L, показанный на иллюстрации, относится к профессиональному сегменту. Модель с 27-дюймовым экраном Full HD (16:9) ориентирована на архитекторов, дизайнеров и операторов систем автоматизированного проектирования. Устройство имеет светодиодную подсветку, которая обеспечивает стабильную и равномерную яркость свечения и высокую контрастность экрана. Кроме того, светодиодная подсветка имеет длительный срок службы и потребляет на 40% меньше энергии, чем ламповая.

Монитор Philips 273P3L
Подставка Super Ergo предусматривает изменение угла наклона, высоты в пределах 11 см и поворот на 90°. Монитор имеет вход HDMI и концентратор USB.
Интересной особенностью изделия является технология Philips PowerSensor: яркость экрана автоматически снижается, как только пользователь отходит от него. Инфракрасный датчик распознает, когда пользователь возвращается на свое рабочее место и подает сигнал, который тут же возвращает монитор в обычный режим работы. По оценке производителя, технология PowerSensor помогает сократить расходы на электроэнергию до 80% в то время, пока монитор включен, но не используется — например, во время совещаний и перерывов на обед.
На российском рынке монитор Philips 273P3L должен появиться в продаже в начале июня по цене 13500 руб.