2,8,10,16進数の変換
2,8,10,16進数の表記の仕方:
2進数:0bから始まる
8進数:0から始まる
16進数:0xから始まる
書き方
2進数 :0b****
8進数 :0***
10進数 :**
16進数 :0x***
例:
code:c
/* numericals1.c 数値の表し方 */
#include <stdio.h>
int main(void)
{
int n;
n = 0b10100; /* 2進表記 */
printf("n = %d\n", n);
n = 024; /* 8進表記 */
printf("n = %d\n", n);
n = 20; /* 10進表記 */
printf("n = %d\n", n);
n = 0x14; /* 16進表記 */
printf("n = %d\n", n);
return 0;
}
実行結果:https://paiza.io/projects/847D89GGEKRr-xHxWNy83w?language=c
2進数化して確認する。
code:c
#include <stdio.h>
void second(int decimal)
{
/* 変数の宣言 */
int binary = 0;
int base = 1;
/* 10進数の入力 */
// printf("10進数 = %d\n",decimal);
/* 10進数を2進数に変換 */
while(decimal>0){
binary = binary + ( decimal % 2 ) * base;
decimal = decimal / 2;
base = base * 10;
}
/* 変換した2進数の出力 */
printf(" 2進数 = %d\n", binary);
}
int main(void){
int n;
n = 0b10100; /* 2進表記 */
printf("n = %d\n", n);
second(n);
n = 024; /* 8進表記 */
printf("n = %d\n", n);
second(n);
n = 20; /* 10進表記 */
printf("n = %d\n", n);
second(n);
n = 0x0100; /* 16進表記 */
printf("n = %d\n", n);
second(n);
}
実行結果:https://paiza.io/projects/fqABB39C1He0rRgQ4WaIVg?language=c
対応表:https://kaworu.jpn.org/java/10進数と2進数と8進数と16進数の対応表
2進数変換プログラム;
https://paiza.io/projects/a6WmMWnMGG0Pt0dvVxCiGQ?language=c
少数の10進数を整数部と少数部に分けるプログラム
code:c
//10進数を実数部と少数部に分けるプログラム
#include <stdio.h>
int main(void){
// Your code here!
float num10; //入力する少数の10進数
float num10_f; //入力した数の少数部を格納
int num10_r; //入力した数の整数部を格納
num10 = 1.2657; //分ける変数の入力値
//整数部の算出
num10_r = num10;
printf("%fの整数部=%d\n",num10,num10_r);
//少数部の算出
num10_f = num10-num10_r;
printf("%fの少数部=%f\n",num10,num10_f);
}
実行結果:https://paiza.io/projects/V1TpG7IeVMB7Bpr1VOw1-A?language=c
少数の10進数を8進数に変換
code:c
//10進数を実数部と少数部に分けるプログラム
#include <stdio.h>
int main(void){
// Your code here!
float num10; //入力する少数の10進数
float num10_f; //入力した数の少数部を格納
int num10_r; //入力した数の整数部を格納
int num8_r;
int oct8;
int i = 0;
num10 = 21.2657; //分ける変数の入力値
//整数部の算出
num10_r = num10;
printf("%fの整数部=%d\n",num10,num10_r);
//少数部の算出
num10_f = num10-num10_r;
printf("%fの少数部=%f\n",num10,num10_f);
num8_r = num10_r;
while(num8_r>0){
i++;
//8進数変換
octi = num8_r%8; //num10/8の余りを算出
num8_r = num8_r/8; //num10/8の整数部を算出
printf("oct%d=%d\n",i,octi);
}
printf("numの8進数=0",i);
for(int num=i;num>0;num--){
printf("%d",octnum);
}
printf("\n");
}
実行結果:https://paiza.io/projects/_9tZkOsyDLtgNaqhT8adqQ?language=c
table:2進数
10進数 2進数
0 0
1 1
2 10
3 11
4 100
5 101
6 110
7 111
8 1000
9 1001
10 1010
11 1011
12 1100
13 1101
14 1110
15 1111
・・・
table:2進数
4桁目 3桁目 2桁目 1桁目
2の4乗 2の3乗
table:16変換,10進数、2進数
16進数 10進数 2進数
0x0001 1 0b0001
0x0002 2 0b0010
0x0003 3 0b0011
0x0004 4 0b0100
0x0005 5 0b0101
0x0006 6 0b0110
0x0007 7 0b0111
0x0008 8 0b1000
0x0009 9 0b1001
0x000A 10 0b1010
0x000B 11 0b1011
0x000C 12 0b1100
0x000D 13 0b1101
0x000E 14 0b1110
0x000F 15 0b1111
0x0010 16  0b10000
0x0011 17 0b10001
16進数の場合は、0~9とアルファベットA~Fの1桁辺り15あり、
16になったら、桁を1つあげる。
2進数の場合は、0~1の1桁辺り2あり、
2になったら、桁を一つあげる。
このように、n進数とは、
nになったら、桁を1つあげる数値である。