2025-02-04 20:30:50
发布于:江苏
#if 0
位运算 (bit) 二进制位
 
&& 逻辑与、或||、非 ! 
& 按位与 
| 按位或
~ 按位取反
^ 按位异或 
<< 按位左移 
>> 按位右移 
1 Byte = 8 bit
1 KB = 1024 B
#endif 
#include<bits/stdc++.h>
using namespace std;
int main()
{
	int n = 7, m = 14;
	printf("%d&&%d = %d\n", n, m, n&&m); 	//逻辑运算 1 
	printf("%d&%d = %d\n", n, m, n&m); 		//位运算  0
	
	/*
	0111(7) 
&   1110(14) 
    0110(6) 
	*/ 
	
	
	printf("%d^%d = %d\n", n, m, n^m); 	//按位异或 
	/*
	0111(7) 
^   1110(14) 
    1001(9) 
	*/ 
//	性质1:相同的数字异或的结果为 0
//	性质2:任何一个数字异或0的结果为 它本身 
	
	
	n = 1;
	for (int i=1; i<=10; i++){
		printf("%d ", n<<i);
	} 
	cout<<endl;
//	10000
//	数字n左移x位,相当于放大了 2的x次方 倍 
//	数字n右移x位,相当于缩小了 2的x次方 倍
//	(操作数)
//	单目运算符: i++, !flag, ~ 
//	三目运算符: (语句1)?(语句2):(语句3) 
	 
	n = 5; 
	printf("~%d = %d\n", n, ~n) ;
	
//	取反的计算方法: ~n = -n-1
	/*
	0101
	
	int n = 5; (32bit)
	 
	0000 .... 0001
	-1
	1111 .... 1111
	
	二进制码:
	原码:1000 ... 0001 
	反码:1111 ... 1110 (符号位不变,其他位取反) 
	补码:1111 ... 1111 (反码+1)
	符号位:二进制的最高位是符号位 
	负数在计算机中的存储形式都是 补码。
	正数的三码相同 
	 
	*/
	
	
	return 0;
}
这里空空如也








有帮助,赞一个