知点
另外
解题
代码
#include
#include
using namespace std; int ans[33], temp[33]; int main() {
memset(ans, 0, sizeof(ans)); memset(temp, 0, sizeof(temp)); int n; cin >> n; int flag = (n >= 0) ? 0 : 1;//正负 n = (n >= 0) ? n : -n; int size = 0; do {
temp[size++] = n % 2; n /= 2; } while (n != 0);//得到二进制 for (int i = 0; i < size; ++i) {
//复制到答案数组里 ans[31 - i] = temp[i]; } if (flag) {
//负数情况下 for (int i = 1; i < 32; ++i) {
//反码 ans[i] = (ans[i]) ? 0 : 1; } for (int i = 31; i > 0; --i) {
//补码 if (ans[i] == 1)ans[i] = 0; else {
ans[i] = 1; break; } } } ans[0] = flag;//符号位 for (int i = 0; i < 32; ++i) {
cout << ans[i]; } return 0; }
发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/176437.html原文链接:https://javaforall.net
