C 如何仅使用2字节整数的10位?

C 如何仅使用2字节整数的10位?,c,int,bit-manipulation,C,Int,Bit Manipulation,我在一次采访中被问到这个问题。假设整数为2字节,即16位,面试官希望我只使用整数的10位,这基本上限制了整数的范围。其他6位当然不用。这是通过位屏蔽实现的。安定会给你结果。给出一个想法,从一个整数中获取8个最高最低有效位,然后使用0xff,依此类推 你的面试官可能希望你展示一些领域: struct { int a : 10; } foo; 在采访中,这似乎是一个奇怪的特征,但这就是我所能想到的 而且它可能仍然没有期望的行为,因为它的“10位”功能只适用于存储,而不适用于您使用它的任何操

我在一次采访中被问到这个问题。假设整数为2字节,即16位,面试官希望我只使用整数的10位,这基本上限制了整数的范围。其他6位当然不用。

这是通过位屏蔽实现的。安定会给你结果。给出一个想法,从一个整数中获取8个最高最低有效位,然后使用0xff,依此类推

你的面试官可能希望你展示一些领域:

struct
{
    int a : 10;
} foo;
在采访中,这似乎是一个奇怪的特征,但这就是我所能想到的


而且它可能仍然没有期望的行为,因为它的“10位”功能只适用于存储,而不适用于您使用它的任何操作。

您不熟悉按位运算符吗?对不起,可能我不清楚。让我澄清一下,目的不是从现有整数中提取10位。但事实上,用一个新的数据类型,比如TyPulf,它是一个只能存储10位的整数。你确定这是C而不是C++吗?对不起,也许我不清楚。让我澄清一下,目的不是从现有整数中提取10位。但事实上,创建一个新的数据类型,比如使用typedef,它将是一个只能存储10位的整数。