ビット・バイトといった単位関連についての記事です。
n進数などについても簡単に解説しています。
ビットとは?
コンピューターは、電気信号がオフの状態【0】とオンの状態【1】で情報を表します。
この【0】or【1】の値を取る情報の最小基本単位をビットと言います。
バイトとは?
ビットが8つ集まったものを1バイトと言います。
ファミコン時代の音楽も8bitなどと呼ばれていますね。
1バイトで、2^8 = 256通りの情報を表すことが出来ます。
ビット・バイトの単位
単位 | 読み方 | 情報量 |
---|---|---|
b | ビット | - |
B | バイト | 1B = 8b |
KB | キロバイト | 1KB = 1024B |
MB | メガバイト | 1MB = 1024KB |
GB | ギガバイト | 1GB = 1024MB |
TB | テラバイト | 1TB = 1024GB |
PB | ペタバイト | 1PB = 1024TB |
EB | エクサバイト | 1EB = 1024PB |
ZB | ゼタバイト | 1ZB = 1024EB |
YB | ヨタバイト | 1YB = 1024ZB |
2^10 = 1024 ごとに単位が繰り上がります。
sizeof()
sizeof()を使うと、変数や型がメモリ上に占めるバイト数を取得することが出来ます。
sizeof(○○)
コーディング例①
#include <stdio.h> // printf()を使用するために必要
int main()
{
int a = 10;
char b = 'a';
char c[] = "Hello";
char d[15] = "こんにちは";
printf("int型 = %dバイト\n", sizeof(a));
printf("char型 = %dバイト\n", sizeof(b));
printf("cのバイト数は、%dバイトです。\n", sizeof(c));
printf("dのバイト数は、%dバイトです。\n", sizeof(d));
return 0;
}
出力
int型 = 4バイト
char型 = 1バイト
cのバイト数は、6バイトです。
dのバイト数は、15バイトです。
文字コード
UTF-8
UTF-8【ユーティーエフエイト】とは、UNICODE(国際的な文字コード規格)の一つであり、テキストデータをエンコードする方式のことです。
UTF-8では、ASCII文字(英数字や一部の特殊文字)は1バイトで表現され、日本語などの文字は2~4バイトで表現されます。
また、UTF-8は世界で最も普及している文字コードでもあります。
Shift_JIS
Shift_JIS【シフトジス】とは、日本語用に開発された文字をエンコードする方式のことです。
Shift_JISでは、半角文字は1バイトで表現され、全角文字は2バイトで表現されます。
正式名称は、「Shift_Japanese Industrial Standards」らしいです。
n進数
冒頭でも少し触れましたが、コンピューターはオフの状態【0】とオンの状態【1】で情報を表します。
なので、それに関連した【n進数】についても少し解説しておきます。
普段我々が使っている数字は、10進数です。
人間の指の数が10本なので、10進数になったと言われています。
コンピューターの場合は、電気信号のオン・オフの2通りなので、2進数が利用されます。
また、2進数と互換性が高い16進数も利用されます。
16進数の表記方法
C++の中で、数値を16進数表示にしたい場合は、数字の前に【0x】を付けます。
また、書式指定では【%x】を利用します。
コーディング例①
#include <stdio.h> // printf()を使用するために必要
int main()
{
int a = 12;
char b = 0x11;
printf("aは10進数で%d、16進数で%x\n", a, a);
printf("aは10進数で%d、16進数で%X\n", a, a);
printf("bは10進数で%d、16進数で%x\n", b, b);
return 0;
}
出力
aは10進数で12、16進数でc
aは10進数で12、16進数でC
bは10進数で17、16進数で11
数字の前に【0x】を付けると、16進数の表記となります。
【%x】を【%X】にすると、大文字表記となります。