// PascalABC.NET 3.1, сборка 1250 от 28.05.2016 begin var a:=-1.32; var b:=1.49; var h:=0.11; var y1:=-14.0; var y2:=17.0; var k:=0; var x:=a; while x<=b do begin var y:=Tan(x); if (y>=y1) and (y<=y2) then begin Writeln('x=',x:5:2,' y=',y:7:4); Inc(k) end; x+=h end; Writeln('Найдено значений: ',k) end.
Переводим третий байт IP и адреса сети в двоичную систему
50 - 110010
48 - 110000
Так как это байт (а в байте 8 бит), допишем два незначащих нуля к получившимся числам:
00110010 - IP
00110000 - адрес сети
Адрес сети получается с применения поразрядной конъюнкции к маске и IP, проще говоря, при перемножении разрядов маски и IP-адреса. И в маске всегда сначала идут только единицы, а потом только нули. То есть можно записать так:
- маска
00110010 - IP
00110000 - адрес сети
где иксы в маске и цифры в IP-адресе - множители, а разряды адреса сети - произведение.
На 3 и 4 месте в маске однозначно должны быть единицы, т.к. если там будут нули, то и в адресе сети будут нули. Плюс к этому, в маске всегда сначала идут только единицы, а потом только нули, то есть можно записать так:
1111 - маска
00110010 - IP
00110000 - адрес сети
Второй справа разряд IP-адреса - единица, а адреса сети - ноль, значит в маске может быть только ноль:
1111хх00 - маска
00110010 - IP
00110000 - адрес сети
Оставшиеся два икса могут быть и единицами, и нулями. Нужно наименьшее возможное значение, значит поставим на их место нули:
11110000 - маска
00110010 - IP
00110000 - адрес сети
То есть третий байт маски 11110000, переведём в десятичную - получим 240.
begin
var a:=-1.32;
var b:=1.49;
var h:=0.11;
var y1:=-14.0;
var y2:=17.0;
var k:=0;
var x:=a;
while x<=b do begin
var y:=Tan(x);
if (y>=y1) and (y<=y2) then begin
Writeln('x=',x:5:2,' y=',y:7:4);
Inc(k)
end;
x+=h
end;
Writeln('Найдено значений: ',k)
end.
Результат
x=-1.32 y=-3.9033
x=-1.21 y=-2.6503
x=-1.10 y=-1.9648
x=-0.99 y=-1.5237
x=-0.88 y=-1.2097
x=-0.77 y=-0.9697
x=-0.66 y=-0.7761
x=-0.55 y=-0.6131
x=-0.44 y=-0.4708
x=-0.33 y=-0.3425
x=-0.22 y=-0.2236
x=-0.11 y=-0.1104
x= 0.00 y= 0.0000
x= 0.11 y= 0.1104
x= 0.22 y= 0.2236
x= 0.33 y= 0.3425
x= 0.44 y= 0.4708
x= 0.55 y= 0.6131
x= 0.66 y= 0.7761
x= 0.77 y= 0.9697
x= 0.88 y= 1.2097
x= 0.99 y= 1.5237
x= 1.10 y= 1.9648
x= 1.21 y= 2.6503
x= 1.32 y= 3.9033
x= 1.43 y= 7.0555
Найдено значений: 26
Переводим третий байт IP и адреса сети в двоичную систему
50 - 110010
48 - 110000
Так как это байт (а в байте 8 бит), допишем два незначащих нуля к получившимся числам:
00110010 - IP
00110000 - адрес сети
Адрес сети получается с применения поразрядной конъюнкции к маске и IP, проще говоря, при перемножении разрядов маски и IP-адреса. И в маске всегда сначала идут только единицы, а потом только нули. То есть можно записать так:
- маска
00110010 - IP
00110000 - адрес сети
где иксы в маске и цифры в IP-адресе - множители, а разряды адреса сети - произведение.
На 3 и 4 месте в маске однозначно должны быть единицы, т.к. если там будут нули, то и в адресе сети будут нули. Плюс к этому, в маске всегда сначала идут только единицы, а потом только нули, то есть можно записать так:
1111 - маска
00110010 - IP
00110000 - адрес сети
Второй справа разряд IP-адреса - единица, а адреса сети - ноль, значит в маске может быть только ноль:
1111хх00 - маска
00110010 - IP
00110000 - адрес сети
Оставшиеся два икса могут быть и единицами, и нулями. Нужно наименьшее возможное значение, значит поставим на их место нули:
11110000 - маска
00110010 - IP
00110000 - адрес сети
То есть третий байт маски 11110000, переведём в десятичную - получим 240.