Я так понял если левый бит равен 1, то отсчет начинается с минимального значения т.е. к числу прибавляется минимальное значение. А если равен 0, то отсчет с 0. Так?
DDDEN!SSS, ну да, все верно. В беззнаковом случае после 127 (01111111) отсчет ведется так же до 255, а в знаковом перескакивает на -128 вместо 128 и дальше идет к нулю. Просто как бы получается, что диапазон чисел [10000000; 11111111] соответствует либо диапазону [128; 255], либо [-128; -1].
Значит когда я меняю знаковый бит на 0, то число изменяется так i -= minValue; но только если бит был равен 1. Если бит был 0, то ничего не меняется. Неужели дошло
DDDEN!SSS, num=(num"0xffffffff)+1; вот так вот меняется знак у извращенцев. а вобще можешь забить. if занимает один опкод, думаю лучше не сделать. Разве-что с многолетним опытом программирования на BrainFuck.
2 авг 2010 в 18:12