私がやろうとした宿題は期限を過ぎているので、あなたは私の宿題をやっていません。
学習のために、いくつかのことを行う方法を知りたいです。
ビット単位の演算子を使用したマスクを使用して、1 ~ 32 をバイナリで出力するプログラムを作成できました。
私が使用したマスクの問題は、先頭に 32 個のゼロが出力され、その後に 2 進数が続くことです (例: 数値 1 の場合は 00000000000000000000000000000001)。
これは私が持っていたものです
# include <iostream>
#include <string>
using namespace std;
string naiveBitToChar( int num )
{
string st;
unsigned mask = 0x80000000;
if( num == 0 )
{
return "0";
}
while( ( num & mask ) )
mask >>= 1;
do
{
if ( num & mask )
{
st = st + "1";
}
else
{
st = st + "0";
}
mask >>= 1;
}
while( mask );
return st;
}
int main ( int argc, char* argv[] ) {
argc; argv;
for( int i = 0; i < 32; i++ )
cout << naiveBitToChar(i) << "\n";
system ("pause");
}
私はする必要がありました:
- 文字列から先頭のゼロを削除します
- 各文字列に 8 つの数字の最小幅を追加します (例: 00000010)
- 区切りマスクを使用して、4 桁ごとにアンダースコアを追加します (例: 0000_1000)
私は C++ を初めて使用します。私の先生は私のコードを見ようともしませんでした。ありがとうございました!