ページ番号を抽出して基数10の数値からオフセットしようとしています。私は問題なくオフセットを抽出することができますが、ページ番号を取得しようとすると、単にオフセットが生成されます。ビットマスクを使用してページ番号を取得し、Cの基数10からオフセットを取得します
int PAGE_MASK = 255;
int OFFSET_MASK = 63;
int test_numbers[5] = { 36547, 342, 128, 1, 23650 };
int i;
for(i = 0; i < 5; i++) {
int pg_offset = test_numbers[i] & OFFSET_MASK;
int pg_number = test_numbers[i] & PAGE_MASK;
printf("%s%d%s%d", "Page Number: ", pg_num, " Offset: ", pg_offset);
}
このコードを使用すると、正しいオフセットが得られますが、間違ったページ番号が表示されます。私はページ番号のビットを正しくシフトしようとしていましたが、それを動作させることができませんでした。また、プログラムは、すべてのページ番号が8ビットであり、すべてのオフセットが8ビットであると仮定しています。
**これは**ベースではありません10.バイナリ演算は、ベース2またはベース16の強い表示です。 – MSalters
[mcve]を入力してください。あなたは完全で検証可能ではありません。変数の値と期待した値を教えてください。 – user694733