По моему варианту компилер сделал вместо умножения сдвиг либо копирование байта - "1" попал на знаковый бит.А при 256.0 все равно не привелось к флоату, получилось переполнение и тоже отрицательный результат.