for %1 in (*.*) do echo %1
Попытка "СПРАВКА ДЛЯ" в cmd для полного руководства
Это - руководство для команд XP. http://www.ss64.com/nt/
Используйте операторы битового сдвига для извлечения нужных битов.
pageNumber = x >> 10;
offset = x & ((1 << 10) - 1);
Для номера страницы оператор >> сдвигает биты вниз, поэтому вы теряете наименее значимые биты .
Для смещения ((1 << 10) - 1) создает битовую маску, состоящую из 10 единиц, которая используется для выбора только 10 младших битов и игнорирования самых старших битов.
Я большой поклонник "двухсменного" метода извлечения поля. Он работает как со знаком, так и без знака. Чтобы извлечь поле шириной w
с младшим битом lsb
из word
:
#define BITSIN(W) (8*sizeof(W))
return (word << (BITSIN(word) - (lsb+width))) >> (BITSIN(word) - width);
В этом случае BITSIN (word) == 32
и lsb + width == 32
, поэтому, пока слово, о котором идет речь, не имеет знака, вы можете просто сдвинуть вправо на 10 без маскировки.
Одно предупреждение: остерегайтесь 32-битных переключает на 32-битные типы ! Стандарт C позволяет компилятору делать что угодно, и то, что делают обычные чипы Intel, бесполезно: x << y
сдвигает x
влево на y% 32
бит (при условии, что x
имеет 32-битный целочисленный тип). Это означает, что если вы попытаетесь сдвинуть 32-битное целое число влево или вправо на 32 бита, результат такой же, как и при бездействии. Аналогичная проблема возникает с 64-битными сдвигами 64-битных типов.