C語言基礎(chǔ)操作之操作符、進制與數(shù)據(jù)表示通俗講解
操作符詳解:從基礎(chǔ)到實用
位操作符:二進制層面的魔法
位操作符是直接對數(shù)字二進制位進行操作的工具,在底層編程中非常實用:
- 按位與(&):兩個位都為1時結(jié)果為1,可用于"清零"特定位。
int a = 0b1010; // 10
int b = 0b1100; // 12
printf("%d", a & b); // 輸出8(0b1000,保留共同為1的位)
- 按位或(|):至少一個位為1時結(jié)果為1,可用于"設(shè)置"特定位。
printf("%d", a | b); // 輸出14(0b1110,合并所有1的位)
- 按位異或(^):位不同時結(jié)果為1,可用于"翻轉(zhuǎn)"特定位。
printf("%d", a ^ b); // 輸出6(0b0110,不同的位保留1)
- 左移(<<) 和 右移(>>):將二進制位整體移動,相當于快速乘除2的冪。
printf("%d", 8 << 1); // 16(左移1位=×2)
printf("%d", 16 >> 2); // 4(右移2位=÷4)
賦值操作符的進階用法
除了基本的=,復(fù)合賦值操作符能讓代碼更簡潔:
int x = 10; x += 5; // 等價于 x = x + 5 → x=15 x *= 3; // 等價于 x = x * 3 → x=45 x &= 0b111; // 等價于 x = x & 0b111 → 保留低3位
三元運算符的巧妙應(yīng)用
條件操作符?:可以簡化簡單的if-else判斷:
int score = 75;
// 格式:條件 ? 滿足時的值 : 不滿足時的值
char* result = (score >= 60) ? "及格" : "不及格";
printf("%s", result); // 輸出"及格"
進制轉(zhuǎn)換:程序員的"語言切換"
多進制輸出技巧
在printf中用特定格式符可直接輸出不同進制:
int num = 255;
printf("十進制:%d\n", num); // 255
printf("八進制:%o\n", num); // 377(前綴0可省略)
printf("十六進制:%x\n", num); // ff(小寫)
printf("十六進制:%X\n", num); // FF(大寫)
十六進制的實用價值
十六進制因與二進制轉(zhuǎn)換方便(1位16進制=4位二進制),常用于表示內(nèi)存地址或顏色值:
int color = 0xFF0088; // 紅色(FF)、綠色(00)、藍色(88)的混合色
原碼、反碼、補碼:計算機的"負數(shù)思維"
為什么需要補碼?
- 原碼:直接表示正負,但計算時會出現(xiàn)
0和-0兩種表示 - 反碼:解決了部分問題,但仍有正負零問題
- 補碼:徹底解決正負零問題,且能讓加減法用同一套電路實現(xiàn)
補碼計算實例
以8位整數(shù)為例,計算3 + (-2):
- 3的補碼:
00000011 - -2的補碼:
11111110(原碼10000010→反碼11111101→加1得補碼) - 相加結(jié)果:
00000011 + 11111110 = 100000001 - 去掉最高位溢出,得
00000001(即1),計算正確!
位操作與補碼的配合
利用補碼特性可以簡化操作,比如取相反數(shù):
int a = 5;
int b = ~a + 1; // 等價于 -a(補碼的取反加1就是相反數(shù))
printf("%d", b); // 輸出-5
通過這些基礎(chǔ)概念的理解,能幫你更深入掌握C語言的底層邏輯,為后續(xù)學習指針、內(nèi)存操作打下基礎(chǔ)。
總結(jié)
到此這篇關(guān)于C語言基礎(chǔ)操作之操作符、進制與數(shù)據(jù)表示通俗講解的文章就介紹到這了,更多相關(guān)C語言操作符、進制與數(shù)據(jù)表示內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
C++雙線程調(diào)用網(wǎng)絡(luò)攝像頭與多線程調(diào)用多攝像頭同步執(zhí)行方法詳細講解
這篇文章主要介紹了C++雙線程調(diào)用網(wǎng)絡(luò)攝像頭與多線程調(diào)用多攝像頭同步執(zhí)行方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習吧2022-11-11
C語言詳解數(shù)據(jù)結(jié)構(gòu)與算法中枚舉和模擬及排序
枚舉和模擬其實是沒什么算法可言的,大多數(shù)都是按照題目意思去寫,這里提供快排和歸并的兩個模板,感興趣的朋友來看看吧2022-04-04
如何實現(xiàn)在C++中調(diào)用C函數(shù)
這篇文章主要介紹了如何實現(xiàn)在C++中調(diào)用C函數(shù)問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2023-08-08
Qt中PaintEvent繪制實時波形圖的實現(xiàn)示例
本文主要介紹了Qt中PaintEvent繪制實時波形圖的實現(xiàn)示例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2022-06-06

