Литерал
0177 в языке С++ - это восьмеричный целочисленный литерал, который имеет тип
int и положительное значение
127 - семь младших битов равны 1, а остальные (старшие) равны 0.
Вы не указали в своем вопросе какой тип имеет
n, что делает ваш вопрос несколько бессмысленным (или полностью бессмысленным), но если предположить, что
n - это переменная некоего целочисленного типа, то в данном выражении операнды оператора
& будут неявно приведены к одному общему целочисленному типу (к одной ширине). Этот процесс называется
usual arithmetic conversions (UAC). Если в процессе UAC придется расширить операнд
0177, то он будет дополнен до требуемой ширины дополнительными нулевыми битами в старшей части.
Так образом, даже после такого преобразования операнд
0177 по-прежнему будет представлять собой битовую "маску" из семи единичных битов в младшей части и нулевых битов в старшей части. Оператор
& в такой ситуации "сохранит" семь младших битов исходного значения
n и обнулит остальные биты.