1) 8=2^3. Каждый цвет весит 3 бита
2) 2^7=128. Глубина цвета 128
3) 512=2^9. Для каждого цвета выделяется 9 бит
4) Количество пикселей (точек)=256*512=(2^8)*(2^9)=2^(8+9)=2^17 px.
Определим вес каждого пикселя: 16=2^4, те каждый пиксель весит 4 бита
Вес картинки=(2^17)*4=(2^17)*(2^2)=2^(17+2)=2^19 бит=(2^19):(2^13)=2^6=64 Кбайта
5) вес изображения 64 Кбайта=(2^6)*(2^13) бит=2^19 бит.
Количество пикселей=1024*512=(2^10)*(2^9)=2^19 px
Вес каждого пикселя: 2^19 бит/2^19 px=1 бит
Количество цветов в палитре=2^1=2 цвета в палитре
6) Палитра RGB (Red-Green-Blue), по 2 шестнадцатеричной цифры на цвет.
На строке 9 "if x>=-7.5 and x<2 then y:=(a*sqrt(abs(x+6))); " в том месте, где выделено жирным, компилятор думает, что необходимо произвести побитовое умножение числа с плавающей точкой типа real -7.5 и целого числа x. Т.к. побитовое умножение применимо только к целым числам, компилятор пытается преобразовать -7.5 к целому числу, т.е. к integer, и у него это не получается, о чем он Вам и говорит.
Чтобы он не думал, что Вы собираетесь производить побитовое умножение (ведь Вы хотите произвести логическую операцию между результатами двух сравнений), нужно занести в скобки выражения x>=-7.5 и x<2, чтобы получилась такая строка: "if (x>=-7.5) and (x<2) then y:=(a*sqrt(abs(x+6))); "