c99中,設定了stdint.h來定義一組整型資料型別,形如:intn_t和uintn_t對不同的n值指定n位有符號和無符號整數,n的值一般為:8,16,32,64。這樣,我們就可以無歧義的宣告乙個16位無符號變數:uint16_t a
如果要想用printf列印這樣宣告的變數,可移植的做法是,包含標頭檔案inttypes.h(它內部包含了stdint.h),該標頭檔案中定義了一串類似prid32,prid64,priu32,priu64等等的巨集,根據系統的不同擴充套件為不同的含義。
###inttypes.h標頭檔案片段 4243 # if __wordsize == 64
44 # define __pri64_prefix "l"
45 # define __priptr_prefix "l"
46 # else
47 # define __pri64_prefix "ll"
48# define __priptr_prefix 49
# endif 50
51/*
macros for printing format specifiers.
*/52
53/*
decimal notation.
*/54 # define prid8 "d"
55 # define prid16 "d"
56 # define prid32 "d"
57 # define prid64 __pri64_prefix "d"
58101
/*unsigned integers.
*/102 # define priu8 "u"
103 # define priu16 "u"
104 # define priu32 "u"
105 # define priu64 __pri64_prefix "
u"
1 #include 2 #include 3int main(int argc, char *ar**) 4
二進位制位運算
與運算,6 3 2 或運算 6 3 7 異或運算 6 3 5 反碼 6 7 左移 3 2 12 3 2 2 12 右移 3 1 1 3 2 1 無符號右移 3 1 1 3 2 1 按位與,當兩位同時為1時才為1如 1 1 1 1 0 0 0 1 0 6 3相當於 0110 0011 0010 2 按...
更新二進位制位
問題描述 給出兩個32位的整數n和m,以及兩個二進位制位的位置i和j。寫乙個方法來使得n中的第i到j位等於m m會是n中從第i為開始到第j位的子串 日期 2017 8 22 思路 由於題目的提示中已經給出,i到j有足夠的空間放置m,將n中的第i到j之間的數字全部置為0,最後與m異或即可 includ...
二進位制位運算
一 按位與 位全為1,結果才為1 0 0 0 0 1 0 1 0 0 1 1 1 特殊用法 清零。如果想將乙個單元清零,就是使其全部二進位制位為0,只要與乙個各位都為零的數值相與,結果為零 取乙個數中的指定位。如x 10101110要取x的低4位,用x 00001111 00001110即可 二 按...