原码反码补码 6 110 64 32 16 8 4 2 1 1 1 0 90 1 0 1 1 0 1 0 6十进制数字 110真值 原码 00000110 0000000000000110 整数 反码、补码 与原码相同 -6 -110 用第一位表示符号位 0正 1负 -6 原码 10000110 1000000000000110 反码:符号位不变其他位取反 -6的反码 11111001 1111111111111001 补码: 原码->补码:两边1不变,中间取反 10000110 1 1 11111010 反码->补码:+1 11111001 1 11111010 二进制计算 与& 或| 非~ 异或^ 左移<< 右移>> 1&1=1 其他都是0 0|0=0 其他都是1 ~1=0 ~0=1 0^0=0 1^1=0 0^1=1 1^0=1 6|3=7 110 | 11 110 011 111 6&3=2 110 011 010 6^3=5 101 左移 <<1 相当于*2 [00000000] [00000110] <<1 [00001100] 右移 >>1 相当于/2 取整 [00000110] >>1 [00000011] 3>>1 [00000001] 1>>1 0 负数右移符号位不动 [10000110] [10000011] int mid=(l+r)/2; int mid=l+r>>1;//>>优先级低 不需要括号 进制转换:n转m进制 输入 16 ff2d 8 输出 ff2d(16)->???(8) 翻笔记:数组,字符数组与函数,字符串与函数。 1 kg = ? g string a,b,c,d,e; cin>>a>>b>>c>>d>>e; string l="000"; if(b+e=="kgmg"||b+e=="kmmm") l="000000"; cout<<a<<b<<c<<a<<l<<e;//加空格换行 int y=0; for(int k=1;k<n;k++){ y=k*n+i; bool f=true; //验证 for(int j=1;j<n;j++){ if(y%(n-1)!=0){ f=false; break; } y=y/(n-1)*n+1; } if(f) cout<<答案 } for(int i=0;i<n;i++){ for(int j=i+1;i<n;i++){ int num=a[i]+a[j]; int k=sqrt(num); if(k*k==num) { ++; } } } |