老是把逻辑运算符搞错…记录下来
&&是逻辑与运算符,a && b,一假必假,结合性从左至右。
||是逻辑或运算符,a || b,一真必真,结合性从左至右。
右移: 12>>4 ----> 12/2的4次幂
* 将数字的每个位向右侧移动, 移动后左侧多出的位自动溢出 (舍弃), 右侧补充0
* 例子: b1 b2 b3 b4
* n = 01001111 10100110 11110001 10011110
* m = n >> 1 001001111 10100110 11110001 1001111 (0) 舍弃
* k = n >> 2 0001001111 10100110 11110001 100111 (10) 舍弃
* b1 = (n >> 24) & 0xff; 00000000 00000000 00000000 01001111 (10100110 11110001 10011110)舍弃
* b2 = (n >> 16) & 0xff; 00000000 00000000 00000000 10100110 (11110001 10011110)舍弃
* b3 = (n >> 8) & 0xff; 00000000 00000000 00000000 11110001 (10011110)舍弃
* b4 = n & 0xff; 00000000 00000000 00000000 10011110
左移:12<<4 ----> 12*2的4次幂 0000 1100 ----> 1100 0000 12的左移4变化 12左移4 等于192 或0xC0
b1 = 00000000 00000000 00000000 01001111
b2 = 00000000 00000000 00000000 10100110
b3 = 00000000 00000000 00000000 11110001
b4 = 00000000 00000000 00000000 10011110
(b1 << 24) 01001111 00000000 00000000 00000000
(b2 << 16) 00000000 10100110 00000000 00000000
(b3 << 8) 00000000 00000000 11110001 00000000
b4 00000000 00000000 00000000 10011110
//获取当前系统时间
#include <time.h>
#include <stdio.h>
int main(void)
{
time_t t = time(0);
char tmp[64];
strftime(tmp, sizeof(tmp), "%Y/%m/%d", localtime(&t));
puts(tmp);
return 0;
}
//CString ---> char *
CString str1 ="123";
char *buf =(char *)malloc(50 * sizeof(char));
buf =str1.GetBuffer(str1.GetLength());
str1.ReleaseBuffer();
//char * ------>CString
buf = "dsadsaj";
CString st1 (buf);
1、&:位与运算,遇0得0.即
0 & 0 = 0
0 & 1 = 0
1 & 0 = 0
1 & 1 = 1
2、|:位或运算,遇1得1,即
0 | 0 = 0
0 | 1 = 1
1 | 0 = 1
1 | 1 = 1
3、^:异或运算,在或的基础上1异或1得0
0 ^ 0 = 0
1 ^ 0 = 1
0 ^ 1 = 1
1 ^ 1 = 0 //这是与或不同的地方。
3.~按位取反
假如:a=1010 0000
那么:~a = 0101 1111
取反