Mid*_*hun -2 c++ string binary bitset
这是我的代码,它采用4个字符串的1和0,并使用bitset函数转换为十进制.它返回所有组合的正确值,除了那些涉及11和10的组合{1110,1010,1011,1111}.对于这些数字,它返回忽略MSB的结果.这是因为1010它给出了2作为答案.
#include<bits/stdc++.h>
using namespace std;
#define ul unsigned long
int main(int argc, char const *argv[])
{
int bin1=0,bin2=0,choice=0;
ul x1=0,x2=0;
//string binary;
cin>>bin1;
x1=bitset<4>(bin1).to_ulong();
cin>>bin2;
x2=bitset<4>(bin2).to_ulong();
cout<<x1<<" "<<x2<<endl;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
编辑这里是我的结果的快照
读取另一组输入的同一程序的另一个快照,但这次它给出了正确的输出.顺便说一句的1101和1001是输入和接下来的两个酸橙在输出
cout << bitset<4>(1010).to_ulong() << endl;
Run Code Online (Sandbox Code Playgroud)
打印2.
cout << bitset<4>(0b1010).to_ulong() << endl;
Run Code Online (Sandbox Code Playgroud)
打印10.(注意:二进制文字是在C++ 14中引入的)
bitset( unsigned long val );构造一个bitset,将第一个(最右边的,最不重要的)M个比特位初始化为val的相应比特值,其中M是无符号长long中的比特数中较小的一个,并且正在构造的比特集中的比特数N .[...]
1010比特表示不是0b1010,它是0b1111110010- 对于比特集来说太大了.这就是为什么你会看到意想不到的结果.
| 归档时间: |
|
| 查看次数: |
128 次 |
| 最近记录: |