0
#include<cstdio>
#include<bitset>
#include<iostream>
#include<cmath>
using namespace std;
int main(){
bitset<5> num(-5);
if(num[0])
cout<<(num.to_ulong()-pow(2,5));// cout<<(num.to_ulong()-32);
else
cout<<num.to_ulong();
return 0;
}
在上面的代碼中,如果使用註釋中給出的代碼,它會打印一個不同的數字(4294967291)。這裏發生了什麼?將二進制中的負數轉換爲十進制使用位集
事實上,它工作得很好而沒有;即使2^5和32都是相同的值 – billyjayan
對不起,我錯誤地先讀你的問題。更新了我的答案。 – collapsar
完全工作!那是因爲從無符號整數中減去一個數字總會產生無符號數字? – billyjayan