18章 N進数
http://www.geocities.jp/ky_webid/c/018.html
見るからに難しそう・・・。
基本読み物なので気合入れて読みます。
読み終わったところで練習問題
問題1
キーボードから16進数の整数を入力し、それを8進数で表示させるプログラムを作って下さい。フォーマット指定子を使えば簡単にできます。
フォーマット指定子・・・。8進数の指定ってどうだっけ・・・?
int main () { int num; scanf("%x",&num); printf("%o",num); return 0; }
$ main 7 7 $ main 8 10 $ main 10 20 $ main a 12 $ main 0xff 377
うまくいってるっぽいですね。
問題2
異なる基数同士であっても計算できることをプログラムで試してみて下さい。例えば、8進数の37と16進数のB3との加算結果を10進数で表示させてみて下さい。
int main () { int num1 = 037; int num2 = 0xb3; printf("%d",num1 + num2); return 0; }
210
ということで210になりました。
問題3
8・10・16進数の対応表を表示するプログラムを作って下さい。
面白そうですね。表を作ってみます。
int main() { int i; for(i=0;i<=0xff;++i){ printf("%3d 0x%02x 0%o\n",i,i,i); } return 0; }
どこまで表示させればいいのかわからなかったのでとりあえず16進数の最後の値0xffを終端とみなし表を作ってみました。
また、なるべく綺麗に表示されるように整形してみました。
0 0x00 00 1 0x01 01 2 0x02 02 3 0x03 03 4 0x04 04 5 0x05 05 6 0x06 06 7 0x07 07 8 0x08 010 9 0x09 011 10 0x0a 012 11 0x0b 013 12 0x0c 014 13 0x0d 015 14 0x0e 016 15 0x0f 017 16 0x10 020 17 0x11 021 18 0x12 022 19 0x13 023 20 0x14 024 21 0x15 025 22 0x16 026 23 0x17 027 24 0x18 030 25 0x19 031 26 0x1a 032 27 0x1b 033 28 0x1c 034 29 0x1d 035 30 0x1e 036 31 0x1f 037 32 0x20 040 33 0x21 041 34 0x22 042 35 0x23 043 36 0x24 044 37 0x25 045 38 0x26 046 39 0x27 047 40 0x28 050 41 0x29 051 42 0x2a 052 43 0x2b 053 44 0x2c 054 45 0x2d 055 46 0x2e 056 47 0x2f 057 48 0x30 060 49 0x31 061 50 0x32 062 51 0x33 063 52 0x34 064 53 0x35 065 54 0x36 066 55 0x37 067 56 0x38 070 57 0x39 071 58 0x3a 072 59 0x3b 073 60 0x3c 074 61 0x3d 075 62 0x3e 076 63 0x3f 077 64 0x40 0100 65 0x41 0101 66 0x42 0102 67 0x43 0103 68 0x44 0104 69 0x45 0105 70 0x46 0106 71 0x47 0107 72 0x48 0110 73 0x49 0111 74 0x4a 0112 75 0x4b 0113 76 0x4c 0114 77 0x4d 0115 78 0x4e 0116 79 0x4f 0117 80 0x50 0120 81 0x51 0121 82 0x52 0122 83 0x53 0123 84 0x54 0124 85 0x55 0125 86 0x56 0126 87 0x57 0127 88 0x58 0130 89 0x59 0131 90 0x5a 0132 91 0x5b 0133 92 0x5c 0134 93 0x5d 0135 94 0x5e 0136 95 0x5f 0137 96 0x60 0140 97 0x61 0141 98 0x62 0142 99 0x63 0143 100 0x64 0144 101 0x65 0145 102 0x66 0146 103 0x67 0147 104 0x68 0150 105 0x69 0151 106 0x6a 0152 107 0x6b 0153 108 0x6c 0154 109 0x6d 0155 110 0x6e 0156 111 0x6f 0157 112 0x70 0160 113 0x71 0161 114 0x72 0162 115 0x73 0163 116 0x74 0164 117 0x75 0165 118 0x76 0166 119 0x77 0167 120 0x78 0170 121 0x79 0171 122 0x7a 0172 123 0x7b 0173 124 0x7c 0174 125 0x7d 0175 126 0x7e 0176 127 0x7f 0177 128 0x80 0200 129 0x81 0201 130 0x82 0202 131 0x83 0203 132 0x84 0204 133 0x85 0205 134 0x86 0206 135 0x87 0207 136 0x88 0210 137 0x89 0211 138 0x8a 0212 139 0x8b 0213 140 0x8c 0214 141 0x8d 0215 142 0x8e 0216 143 0x8f 0217 144 0x90 0220 145 0x91 0221 146 0x92 0222 147 0x93 0223 148 0x94 0224 149 0x95 0225 150 0x96 0226 151 0x97 0227 152 0x98 0230 153 0x99 0231 154 0x9a 0232 155 0x9b 0233 156 0x9c 0234 157 0x9d 0235 158 0x9e 0236 159 0x9f 0237 160 0xa0 0240 161 0xa1 0241 162 0xa2 0242 163 0xa3 0243 164 0xa4 0244 165 0xa5 0245 166 0xa6 0246 167 0xa7 0247 168 0xa8 0250 169 0xa9 0251 170 0xaa 0252 171 0xab 0253 172 0xac 0254 173 0xad 0255 174 0xae 0256 175 0xaf 0257 176 0xb0 0260 177 0xb1 0261 178 0xb2 0262 179 0xb3 0263 180 0xb4 0264 181 0xb5 0265 182 0xb6 0266 183 0xb7 0267 184 0xb8 0270 185 0xb9 0271 186 0xba 0272 187 0xbb 0273 188 0xbc 0274 189 0xbd 0275 190 0xbe 0276 191 0xbf 0277 192 0xc0 0300 193 0xc1 0301 194 0xc2 0302 195 0xc3 0303 196 0xc4 0304 197 0xc5 0305 198 0xc6 0306 199 0xc7 0307 200 0xc8 0310 201 0xc9 0311 202 0xca 0312 203 0xcb 0313 204 0xcc 0314 205 0xcd 0315 206 0xce 0316 207 0xcf 0317 208 0xd0 0320 209 0xd1 0321 210 0xd2 0322 211 0xd3 0323 212 0xd4 0324 213 0xd5 0325 214 0xd6 0326 215 0xd7 0327 216 0xd8 0330 217 0xd9 0331 218 0xda 0332 219 0xdb 0333 220 0xdc 0334 221 0xdd 0335 222 0xde 0336 223 0xdf 0337 224 0xe0 0340 225 0xe1 0341 226 0xe2 0342 227 0xe3 0343 228 0xe4 0344 229 0xe5 0345 230 0xe6 0346 231 0xe7 0347 232 0xe8 0350 233 0xe9 0351 234 0xea 0352 235 0xeb 0353 236 0xec 0354 237 0xed 0355 238 0xee 0356 239 0xef 0357 240 0xf0 0360 241 0xf1 0361 242 0xf2 0362 243 0xf3 0363 244 0xf4 0364 245 0xf5 0365 246 0xf6 0366 247 0xf7 0367 248 0xf8 0370 249 0xf9 0371 250 0xfa 0372 251 0xfb 0373 252 0xfc 0374 253 0xfd 0375 254 0xfe 0376 255 0xff 0377
なかなか綺麗に出力されてますね!