Fixing warning C4146: unary minus operator applied to unsigned type, result still unsigned

Making compiler happy
We can enumerate the possible values of `vch.size()` 1..nMaxNumSize and see if it can produce a cast with undefined behavior (where the sign bit is set)
```
vch.size() | max result       | mask             | max casted value 
-----------|------------------|------------------|------------------
 1         | 00000000000000ff | ffffffffffffff7f | 000000000000007f
 2         | 000000000000ffff | ffffffffffff7fff | 0000000000007fff
 3         | 0000000000ffffff | ffffffffff7fffff | 00000000007fffff
 4         | 00000000ffffffff | ffffffff7fffffff | 000000007fffffff
```
- `max result` is the maximum value of `result` for that vector length
- `mask` is ` ~(0x80ULL << (8 * (vch.size() - 1)))`
- `max casted value ` is  the maximum result ANDed with the mask. This is the maximum value that will ever be fed to the (int64_t) cast. 

The value that goes into the (int64_t) cast never has bit 63 set, hence there is no problem.