Цитата(BratherLU @ Oct 24 2013, 10:23)

..
CODE
p[6] = (BYTE)((e_cyl >> 2) + 63); /* End sector */
PS: В своем коде сделал примерно так:
p[6] = ((BYTE)((e_cyl >> 2)&(0xC0)) | 63);
для номера цилиндра окажутся не те значения....есть ошибка..?
не вдаваясь логику работы...
>>2 есть сдвиг в право на две позиции бит. насколько я понимаешь - старшие биты заполняются нулями.
имеем
e_cyl = xxxx xxxx
после сдвига (деление на 4)
e_cyl = 00xx xxxx
в оригинале имеем
00xx xxxx + 0011 1111 (т.е. полностью будет звучать так (Z/4 + 63)
в Вашем варианте
(00xx xxxx & 1100 0000) + 0011 1111
что после наложения маски даст
0000 0000 + 0011 1111
что является всегда константой
0011 1111 т.е. всегда(!) 63
ик?