2017-02-21 22 views
0

我在採訪中被問到了這個問題。假設一個int爲2個字節,即16位,採訪者希望我只使用整數的10位,這基本上限制了int的範圍。其他6位當然不會使用。如何僅使用2個字節的int的10位?

+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位」功能將僅適用於儲存,不使用它的任何操作。

相關問題