這是一個非常基本的問題,我確信它有一個簡單的答案,但我不知道我應該用來查找答案的搜索字詞。這裏是:爲什麼在掩碼中使用十進制數字?
我想了解位掩碼如何工作。在Linux系統有:
struct stat
具有這是我們用來確定被檢查的文件是否是一個普通文件,目錄,符號鏈接,和別人ST_MODE成員。因此,它可以寫一個簡單的函數,你可以傳遞一個名稱,並獲得名字是否表示一個目錄:
16 int isadir(char *name)
17 /*
18 * calls stat, then masks the st_mode word to obtain the
19 * filetype portion and sees if that bit pattern is the
20 * pattern for a directory
21 */
22 {
23 struct stat info;
24
25 return (stat(name,&info)!=-1 && (info.st_mode & S_IFMT) == S_IFDIR);
26 }
當我看着位掩碼,我看到它的表示如下:
/* Encoding of the file mode. */
#define __S_IFMT 0170000 /* These bits determine file type. */
我以爲掩碼只能有0和1。爲什麼面具上有7個?
我的猜測是常量以八進制表示(基數爲8) – 2013-02-24 03:59:33
所有數字均以二進制數字形式存儲在內部。前導0表示八進制。人類可以輕鬆輸入和閱讀。編譯時,它最終會變成二進制。 – QuentinUK 2013-02-24 04:00:10
這是一個重要的觀點,如果你要寫或讀c。前導零在整數常量中是*顯着*,因爲它們設置基數。同樣地,引導表示十六進制的「0x」或「0X」(以16爲底)。 – dmckee 2013-02-24 04:17:55