<<
- оператор сдвига слева; это берет двоичное представление значения и перемещает все биты «n» влево (кроме «mod», см. «1»), заполняя нули нулями.
>>
- оператор правого сдвига; это делает почти противоположное (перемещение вправо), за исключением знаковых значений (т. е. тех, которые могут быть отрицательными), он заполняет 1 с для отрицательных значений, а остальные нули.
1:
Оператор сдвига по существу является «mod» шириной данных. Int - 32 бита, поэтому сдвиг влево 33 (в Int32) точно такой же, как сдвиг влево 1. Вы не получаете все нули. A long
- 64 бита, поэтому сдвиг влево 33 дает другой ответ (исходное время 2 ^ 33).
2:
Каждый сдвиг влево (в пределах данных ширина) одинакова (для целых чисел) как x2 - так что & lt; 4 равно x2x2x2x2 = x16.
Это простой двоичный файл:
0000000001 = 1
& lt; переходит в
0000000010 = 2
& lt; переходит в
0000000100 = 4
& lt; переходит в
0000001000 = 8
yAxis.tickSizeOuter (0) удаляет внешние отметки, что означает, что линия y является прямой линией, но не удаляет действительные отметки (например, 0-). Если вы что-то, что вы должны использовать что-то вроде:
const tick_count = d3.selectAll("g.axis.axis--y .tick").size();
d3.selectAll("g.axis.axis--y .tick")
.each(function (d, i) {
console.log(d,i)
if ( i == 0 || i == tick_count-1) {
this.remove();
}
});
Надеюсь, я правильно понимаю ваше недоразумение :)