これまで、Rubyを触ってきたのですが今回、C言語をはじめることになりました。
いくつか教えていただきたいことがあります。
キーワードでもよいので、教えていただけますと助かります。

1.メモリ上のビット(01の列)をそのまま表示する方法はありますか?

たとえば、
char a = 1;
とすると、教科書には、
メモリ上に1バイト分確保され、
00000001
というデータが保存されると書いてありますが、
この、00000001 をそのまま表示する方法ありますか?

数字を2進数で表示する (printfの%x) でなく、
メモリ上の1バイト分の01の列を表示したいです。

2.変数のデータ型が、int であるとか、unsigned int であるとか、char であるとかというのは
どこに保存されているのでしょうか?

1の質問とも関連しているのですが、
charが1バイト確保して、そこに01のビットをならべて、8ビットの情報を保持するとすると、
その1バイトがどういうデータ型なのか保存しておく領域がないですよね。

charとintだとあまり困らないようにも思いますが、
unsignedだと、先頭の1ビットが正負を表すので、その1バイトの表す数字の意味が大きくかわりますよね。

このあたりの仕組みを教えてもらえると助かります。


Rubyだと、数字もクラスなので、こういった疑問がなかったのですが、C言語だと避けてとおれないようなので、教えていただけますと助かります。よろしくお願いします。