C++なら<bitset>使えば一発だよ。
例えば、10進数で-10を16bitの2進数に変換し1の補数表現とするなら、
bitset< 16 > b( ~10 );

同じく2の補数表現とするなら、
bitset< 16 > b( ~10 + 1 );

こんだけ。画面に表示するときは
cout << b.to_string() << endl;

C++では線形リスト作れとかソートしろとかみたいな
基礎レベルの宿題はほとんどコード書く必要がない。