sol
cookiebus
2023-03-11 8:40:55
2023-03-11 9:57:30
15
返回题目
和正常二进制数的计算一样,只不过二进制计算的时候是向下取整,负二进制是向上取整。
以6为例 二进制计算
6/2=3 余数 0
3/2=1 余数 1 (向下取整所以3/2=1)
1 余数 1 结果为 110;
负二进制计算
6/-2=-3 余数 0
-3/-2=2 余数 1(向上取整-3/-2=2)
2/-2=-1 余数 0
-1/-2=1 余数 1
1 余数 1 结果为 11010
#include <bits/stdc++.h>
using namespace std;
int n, x = -2;
void f(int a) {
if (a == 0) {
return;
}
int m = (a % x + 2) % 2;
f((a - m) / x);
cout << m;
}
int main() {
cin >> n;
if (n == 0) {
cout << 0;
return 0;
}
f(n);
return 0;
}
{{ vote && vote.total.up }}