Так как fa-icon является компонентом, он не применяет масштабирование, как с необработанным svg.
Вам нужно получить доступ к дочернему элементу в компоненте fa-icon. Попробуйте получить доступ к дочернему элементу svg - (я помню, что дочерний элемент является элементом svg, но используйте ваши инструменты проверки для точного определения)
&:hover {
> svg {
transform: scale(1.1)
-webkit-transform: scale(1.1)
-moz-transform: scale(1.1)
-o-transform: scale(1.1)
}
}
Помните значение по умолчанию transform: scale(1.1)
, оно поддерживается большинство современных браузеров.
Помните, что отрицательные числа сохраняются как дополнение к двум положительного аналога. В качестве примера, вот представление -2 в дополнении к двум: (8 битов)
1111 1110
Способ, которым вы получаете это, беря двоичное представление числа, беря его дополнение (инвертируя все биты) и добавляя один. Два начинается как 0000 0010, и инвертируя биты, мы получаем 1111 1101. При добавлении одного мы получим приведенный выше результат. Первый бит является знаковым битом, означающим отрицательный.
Итак, давайте посмотрим, как мы получим ~ 2 = -3:
Вот еще два:
0000 0010
Просто перевернем все биты, и мы получим:
1111 1101
Хорошо, как выглядит -3 в дополнении к двум ? Начните с положительного значения 3: 0000 0011, переверните все биты до 1111 1100 и добавьте один, чтобы получить отрицательное значение (-3), 1111 1101.
Таким образом, если вы просто инвертируете биты в 2, вы получите представление дополнения до -3.
~
переворачивает биты в значении.
Почему ~ 2
равно -3
связано с тем, как числа представляются поразрядно. Числа представлены в виде дополнения до двух .
Итак, 2 - это двоичное значение
00000010
И ~ 2 переворачивает биты, так что теперь значение равно:
11111101
Что, это двоичное представление -3 .
As others mentioned ~
just flipped bits (changes one to zero and zero to one) and since two's complement is used you get the result you saw.
One thing to add is why two's complement is used, this is so that the operations on negative numbers will be the same as on positive numbers. Think of -3
as the number to which 3
should be added in order to get zero and you'll see that this number is 1101
, remember that binary addition is just like elementary school (decimal) addition only you carry one when you get to two rather than 10.
1101 +
0011 // 3
=
10000
=
0000 // lose carry bit because integers have a constant number of bits.
Therefore 1101
is -3
, flip the bits you get 0010
which is two.
Эта операция является дополнением, а не отрицанием.
Считайте, что ~ 0 = -1, и работайте оттуда.
Алгоритм отрицания - «дополнение, приращение».
Знаете ли вы? Существует также «дополнение», в котором обратные числа симметричны и имеют как 0, так и -0.
tl; доктор ~
зеркальные отражения биты. В результате изменения знака. ~2
отрицательное число (0b..101
). Производить отрицательное число ruby
печать -
, затем дополнение two [1 113]: -(~~2 + 1) == -(2 + 1) == 3
. Положительные числа производятся, как.
существует внутреннее значение и его строковое представление. Для положительных целых чисел они в основном совпадают:
irb(main):001:0> '%i' % 2
=> "2"
irb(main):002:0> 2
=> 2
последнее существо, эквивалентное:
irb(main):003:0> 2.to_s
"2"
~
зеркальные отражения биты внутреннего значения. 2
0b010
. ~2
0b..101
. Две точки (..
) представляют бесконечное число [1 121]. Так как старший значащий бит (MSB) результата 1
, результатом является отрицательное число ((~2).negative? == true
). Производить отрицательное число ruby
печать -
, затем дополнение two внутреннего значения. Дополнение Two вычисляется путем зеркального отражения битов, затем добавления 1
. Дополнение Two [1 127] 3
. Как таковой:
irb(main):005:0> '%b' % 2
=> "10"
irb(main):006:0> '%b' % ~2
=> "..101"
irb(main):007:0> ~2
=> -3
Для подведения его он зеркально отражает биты, который изменяет знак. Для вывода отрицательного числа, это печатает -
, затем ~~2 + 1
(~~2 == 2
).
причина, почему ruby
выходные отрицательные числа как так, состоит в том, потому что она рассматривает хранимую сумму как дополнение two абсолютного значения. Другими словами, что хранится, 0b..101
. Это - отрицательное число, и как таковой, это - дополнение two некоторого значения x
. Для нахождения x
это делает дополнение two [1 136]. Который является дополнением two дополнения two [1 137]. Который является x
(например, ~(~2 + 1) + 1 == 2
).
В случае, если Вы подаете заявку ~
к отрицательному числу, оно просто зеркально отражает биты (который, тем не менее, изменяет знак):
irb(main):008:0> '%b' % -3
=> "..101"
irb(main):009:0> '%b' % ~-3
=> "10"
irb(main):010:0> ~-3
=> 2
то, Что более сбивает с толку, - то, что ~0xffffff00 != 0xff
(или любое другое значение с MSB равняются [1 142]). Давайте упростим его немного: ~0xf0 != 0x0f
. Поэтому это рассматривает 0xf0
как положительное число. Который на самом деле имеет смысл. Так, ~0xf0 == 0x..f0f
. Результатом является отрицательное число. Дополнение Two [1 146] 0xf1
. Так:
irb(main):011:0> '%x' % ~0xf0
=> "..f0f"
irb(main):012:0> (~0xf0).to_s(16)
=> "-f1"
В случае, если Вы не собираетесь применять побитовые операторы к результату, можно рассмотреть ~
как -x - 1
оператор:
irb(main):018:0> -2 - 1
=> -3
irb(main):019:0> --3 - 1
=> 2
, Но это возможно имеет не много применения.
пример Скажем, Вам дают 8-разрядное (для простоты) сетевую маску, и Вы хотите вычислить количество [1 150]. Можно вычислить их путем зеркального отражения битов и вызова bit_length
(0x0f.bit_length == 4
). Но ~0xf0 == 0x..f0f
, таким образом, мы должны отключить ненужные биты:
irb(main):014:0> '%x' % (~0xf0 & 0xff)
=> "f"
irb(main):015:0> (~0xf0 & 0xff).bit_length
=> 4
Или можно использовать оператор XOR (^
):
irb(main):016:0> i = 0xf0
irb(main):017:0> '%x' % i ^ ((1 << i.bit_length) - 1)
=> "f"