unsigned char a = 0xA5;//八进制和十六进制化为二进制(补码形式)
//二进制原码:10100101
//二进制反码:01011010(无符号)
//二进制补码:01011011
//整型提升:00000000 00000000 00000000 01011011
// ~a: 11111111 11111111 11111111 10100100
//~a>>5: 11111111 11111111 11111111 11111101(补码)
// : 10000000 00000000 00000000 00000010
//原码:10000000 00000000 00000000 00000011
char b = ~a >> 4 + 1;
printf("b=%d\n", b);
. 注意:先+1再右移
//\_ _ \0 \017 \0
cout << sizeof("\ \0\017") << endl;//5
//\x1 r \\ \1 \n \0
cout << sizeof("\x1r\\\1\n") << endl;//6
//\\ 0 \" \0 \0
cout << sizeof("\\0\"\0") << endl;//5
/*
转义字符(1个字节): 1.\字符(例如:\n \t \0 \ \\ \" \[)
2.\八进制(最多跟三位八进制 \012 \12 \127 \1)
3.\十六进制(最多跟两位 \xab \x1a)(x不算1位)(注意x前面没有0)
*/
//\\ \0 \0
cout << sizeof("\\\0") << endl;//3
//\0 x 1 2 \0
cout << sizeof("\0x12") << endl;//5
//\01 8 3 \0
cout << sizeof("\0183") << endl;//4
//\\ 0 1 2 \0
cout << sizeof("\\012") << endl;//5
char ch[4][10] = {
"/0/x12", "\\018\018",
"\x1n\" \01\0" };
//sizeof(数组名):整个数组的大小
cout << sizeof(ch) << endl;//40
cout << sizeof(ch[0]) << endl;//10
cout << sizeof(ch[1]) << endl;//10
cout << sizeof(ch[2]) << endl;//10
cout << sizeof("\\018\018") << endl;//7
//strlen:求字符串的长度(即空字符前(不包含空字符)的字符数目)
// / 0 / x 1 2
cout << strlen(ch[0]) << endl;//strlen("/0/x12")//6
//"\\018\018":\\ 0 1 8 \01 8
cout << strlen(ch[