public static int silog2Wide(long v) {
        while (true) {
            if (v == 0) return 0;
            if (v > 0) {
                int l = 0;
                while (v != 0) {
                    l++;
                    v >>= 1;
                }
                return l + 1;
            }
            if (v == -1) return 2;
            v++;
            v = -v;
        }
    }