История изменений
Исправление fsb4000, (текущая версия) :
Хочешь извращений - пиши тесты и документацию.
согласен.
По поводу магии: https://en.wikipedia.org/wiki/SEX_(computing)
в Motorola 6809. была инструкция sex(Sign EXtend):
-
Принимала на вход знаковое целое
-
Если число положительное или 0 возвращала 0
-
Если отрицательное, то возвращала число в котором все биты равны 1.
также
n ^ 0 == n
n ^ 0xFFFFFFFF == ~n
тогда приведённая строка
fLastMoveToIndex ^= ~sex(fLastMoveToIndex);
читается не сложнее чем
if (fLastMoveToIndex >= 0) {
fLastMoveToIndex = ~fLastMoveToIndex;
}
и не воспринимается как какая-то магия…
Исправление fsb4000, :
Хочешь извращений - пиши тесты и документацию.
согласен.
По поводу магии: https://en.wikipedia.org/wiki/SEX_(computing)
в Motorola 6809. была инструкция sex(Sign EXtend):
-
Принимала на вход знаковое целое
-
Если число положительное возвращала 0
-
Если отрицательное, то возвращала число в котором все биты равны 1.
также
n ^ 0 == n
n ^ 0xFFFFFFFF == ~n
тогда приведённая строка
fLastMoveToIndex ^= ~sex(fLastMoveToIndex);
читается не сложнее чем
if (fLastMoveToIndex >= 0) {
fLastMoveToIndex = ~fLastMoveToIndex;
}
и не воспринимается как какая-то магия…
Исходная версия fsb4000, :
Хочешь извращений - пиши тесты и документацию.
согласен.
По поводу магии: https://en.wikipedia.org/wiki/SEX_(computing)
в Motorola 6809. была инструкция sex(Sign EXtend):
-
Принимала на вход знаковое целое
-
Если число положительное возвращала 0
-
Если отрицательное, то возвращала число в котором все биты равны 1.
также
n ^ 0 == n
n ^ 0xFFFFFFFF == ~n
тогда приведённая строка
fLastMoveToIndex ^= ~sex(fLastMoveToIndex);
читается не сложнее чем
if (fLastMoveToIndex > 0) {
fLastMoveToIndex = ~fLastMoveToIndex;
}
и не воспринимается как какая-то магия…