2017-02-21 12 views
0

Меня спросили об этом в интервью. Предполагая, что int будет 2 байта, то есть 16 бит, интервьюер хотел, чтобы я использовал только 10 бит целого числа, которое в основном ограничивает диапазон int. Остальные 6 бит не будут использоваться, конечно.Как использовать только 10 бит int, который равен 2 байтам?

+2

Вы не знакомы с операторами поразрядными? –

+0

Прошу прощения, может быть, я не понял. Позвольте пояснить, цель состоит не в том, чтобы извлечь 10 бит из существующего целого числа. Но на самом деле создайте новый тип данных, скажем, с typedef, который был бы целым числом, способным хранить только 10 бит. – user2311285

+0

Вы уверены, что это C, а не C++? – samgak

ответ

0

Это делается путем маскировки бит. ANDing даст вам результаты. Чтобы дать идею, чтобы получить 8 наименее значимых бит из целого числа, вы должны с 0xff и так далее.

+0

Прошу прощения, может быть, я не был ясен. Позвольте пояснить, цель состоит не в том, чтобы извлечь 10 бит из существующего целого числа. Но на самом деле создайте новый тип данных, скажем, с typedef, который был бы целым числом, способным хранить только 10 бит. – user2311285

0

Ваш интервьюер, возможно, хотел вам продемонстрировать битовые поля:

struct 
{ 
    int a : 10; 
} foo; 

Кажется странным особенность крикнуть в интервью, но это все, что я могу думать.

И он все еще может не иметь желаемое поведение, как «10 бит» особенность этого будет применяться только к хранению, а не каким-либо операций, которые вы используете его в.

Смежные вопросы