2025-02-04 20:32:36
发布于:上海
#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;
}
这里空空如也
有帮助,赞一个