一、Unsigned Char介紹
在C++中,unsigned char屬於無符號字元類型,用於表示字元類數據。相對於char,unsigned char沒有符號位,因此取值範圍更廣,可以表示0~255的整數。unsigned char通常用於位運算及內存操作中。
#include <iostream>
using namespace std;
int main(){
unsigned char c = 254;
c += 2;
cout << "c = " << (int)c << endl;
return 0;
}
以上代碼將unsigned char類型的變數c初始化為254,然後加上2。由於unsigned char的取值範圍是0~255,所以c變數的最終值為0。
二、位運算操作
位運算是計算機中一類常見的運算,主要涉及到位的移動、與、或、異或、取反等操作。unsigned char類型常用於位運算操作中,下面舉例說明:
1、左移運算(<<):將二進位數左移指定位數,右邊補零,相當於將原數乘以2的指定次冪。
unsigned char a = 7;
cout << "a左移1位結果為:" << (int)(a << 1) << endl;
以上代碼將unsigned char類型的變數a左移1位,結果為14。
2、右移運算(>>):將二進位數右移指定位數,左邊補0或補1(取決於所用的右移運算符),相當於將原數除以2的指定次冪。
unsigned char b = 252;
cout << "b右移2位結果為:" <> 2) << endl;
以上代碼將unsigned char類型的變數b右移2位,結果為63。
3、按位與運算(&):對兩個二進位數的每一位進行與運算,結果為1的位保留,結果為0的位清零。
unsigned char c = 26, d = 20;
cout << "c & d的結果為:" << (int)(c & d) << endl;
以上代碼將unsigned char類型的變數c和d進行按位與運算,結果為16(26的二進位數為11010,20的二進位數為10100,按位與運算結果為10000,即16)。
4、按位或運算(|):對兩個二進位數的每一位進行或運算,結果為1的位保留,結果為0的位清零。
unsigned char e = 26, f = 20;
cout << "e | f的結果為:" << (int)(e | f) << endl;
以上代碼將unsigned char類型的變數e和f進行按位或運算,結果為26。
5、按位異或運算(^):對兩個二進位數的每一位進行異或運算,結果為1的位保留,結果為0的位清零。
unsigned char g = 26, h = 20;
cout << "g ^ h的結果為:" << (int)(g ^ h) << endl;
以上代碼將unsigned char類型的變數g和h進行按位異或運算,結果為6(26的二進位數為11010,20的二進位數為10100,按位異或運算結果為01110,即14;將14轉為10進位即為6)。
6、按位取反運算(~):將二進位數的每一位取反。
unsigned char i = 26;
cout << "~i的結果為:" << (int)(~i) << endl;
以上代碼將unsigned char類型的變數i取反,結果為229(26按位取反的結果為11100101,即229)。
三、內存操作
在C++中,unsigned char類型常用於內存操作中,如內存複製、清零等操作。下面舉例說明:
1、內存複製操作(memcpy):將指定內存中的內容複製到另一段內存中。
unsigned char src[] = "This is a source string.";
unsigned char dest[30] = { 0 };
memcpy(dest, src, strlen((char*)src) + 1);
cout << "dest中的內容為:" << dest << endl;
以上代碼將unsigned char類型的字元數組src中的內容複製到dest中,最終輸出dest中的內容。
2、內存清零操作(memset):將指定內存中的內容全部置為0。
unsigned char arr[10] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
memset(arr, 0, sizeof(arr));
for (int i = 0; i < 10; i++) {
cout << "arr[" << i << "] = " << (int)arr[i] << endl;
}
以上代碼將unsigned char類型數組arr中的內容全部清零,並輸出清零後的數組內容。
四、總結
通過以上對unsigned char類型在位運算及內存操作中的應用,我們可以看到unsigned char在這兩個方面都有著廣泛的應用。使用unsigned char類型進行位運算能夠實現對二進位數的操作,而使用unsigned char進行內存操作則可以方便地實現複製、清零等操作。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/249604.html