プロプログラマ

プログラマーを職業としてます。 Flex,Air,C#,Oracle,HTML+JSの言語ノウハウを中心に情報発信していきます

[Oracle] 10進数を2進数表現で表示する

Oracleで2進数表現をする方法を探していた所、Oracleの掲示板(OTN)でスレッドが立っていました。
http://otn.oracle.co.jp/forum/thread.jspa?threadID=2001992&switchMode=threaded

情報処理試験で説明されている、基数変換の方法をOracleで表現したみたいです。
このサンプルでは正数値のみですが、
上記掲示板では、マイナスや小数点ありの場合の出力方法もありますので、ご参考にどうぞ。

スレッドではいろんな方法が投稿されていますが、
ここではその中でも分かりやすいなと感じた方法を挙げています。
少し表示方法を直しました。16進数表現も合わせて出力しています。

色んな所で使うならFunction定義した方がいいですね。


— 0~255の2進数/16進数表現を出力する
SELECT
‘[‘ || TO_CHAR( VAL, ‘999’) || ‘]’ AS DEC,
TO_CHAR(MOD(TRUNC( VAL/POWER(2 ,7)), 2)) ||
TO_CHAR(MOD(TRUNC( VAL/POWER(2 ,6)), 2)) ||
TO_CHAR(MOD(TRUNC( VAL/POWER(2 ,5)), 2)) ||
TO_CHAR(MOD(TRUNC( VAL/POWER(2 ,4)), 2)) || ‘ ‘ ||
TO_CHAR(MOD(TRUNC( VAL/POWER(2 ,3)), 2)) ||
TO_CHAR(MOD(TRUNC( VAL/POWER(2 ,2)), 2)) ||
TO_CHAR(MOD(TRUNC( VAL/POWER(2 ,1)), 2)) ||
TO_CHAR(MOD( VAL,2 )) AS BIN,
TO_CHAR( VAL, ‘FM0X ‘) AS HEX
FROM
(SELECT
ROWNUM-1 AS VAL
FROM
ALL_OBJECTS
WHERE
ROWNUM <= 256 ) ORDER BY VAL DESC [/sql] ▼実行結果 DEC BIN HEX [ 255] 1111 1111 FF [ 254] 1111 1110 FE [ 253] 1111 1101 FD [ 252] 1111 1100 FC [ 251] 1111 1011 FB [ 250] 1111 1010 FA [ 249] 1111 1001 F9 [ 248] 1111 1000 F8 [ 247] 1111 0111 F7 [ 246] 1111 0110 F6 [ 245] 1111 0101 F5 [ 244] 1111 0100 F4 [ 243] 1111 0011 F3 [ 242] 1111 0010 F2 [ 241] 1111 0001 F1 [ 240] 1111 0000 F0 [ 239] 1110 1111 EF [ 238] 1110 1110 EE [ 237] 1110 1101 ED [ 236] 1110 1100 EC [ 235] 1110 1011 EB [ 234] 1110 1010 EA [ 233] 1110 1001 E9 [ 232] 1110 1000 E8 [ 231] 1110 0111 E7 [ 230] 1110 0110 E6 [ 229] 1110 0101 E5 [ 228] 1110 0100 E4 [ 227] 1110 0011 E3 [ 226] 1110 0010 E2 [ 225] 1110 0001 E1 [ 224] 1110 0000 E0 [ 223] 1101 1111 DF [ 222] 1101 1110 DE [ 221] 1101 1101 DD [ 220] 1101 1100 DC [ 219] 1101 1011 DB [ 218] 1101 1010 DA [ 217] 1101 1001 D9 [ 216] 1101 1000 D8 [ 215] 1101 0111 D7 [ 214] 1101 0110 D6 [ 213] 1101 0101 D5 [ 212] 1101 0100 D4 [ 211] 1101 0011 D3 [ 210] 1101 0010 D2 [ 209] 1101 0001 D1 [ 208] 1101 0000 D0 [ 207] 1100 1111 CF [ 206] 1100 1110 CE [ 205] 1100 1101 CD [ 204] 1100 1100 CC [ 203] 1100 1011 CB [ 202] 1100 1010 CA [ 201] 1100 1001 C9 [ 200] 1100 1000 C8 [ 199] 1100 0111 C7 [ 198] 1100 0110 C6 [ 197] 1100 0101 C5 [ 196] 1100 0100 C4 [ 195] 1100 0011 C3 [ 194] 1100 0010 C2 [ 193] 1100 0001 C1 [ 192] 1100 0000 C0 [ 191] 1011 1111 BF [ 190] 1011 1110 BE [ 189] 1011 1101 BD [ 188] 1011 1100 BC [ 187] 1011 1011 BB [ 186] 1011 1010 BA [ 185] 1011 1001 B9 [ 184] 1011 1000 B8 [ 183] 1011 0111 B7 [ 182] 1011 0110 B6 [ 181] 1011 0101 B5 [ 180] 1011 0100 B4 [ 179] 1011 0011 B3 [ 178] 1011 0010 B2 [ 177] 1011 0001 B1 [ 176] 1011 0000 B0 [ 175] 1010 1111 AF [ 174] 1010 1110 AE [ 173] 1010 1101 AD [ 172] 1010 1100 AC [ 171] 1010 1011 AB [ 170] 1010 1010 AA [ 169] 1010 1001 A9 [ 168] 1010 1000 A8 [ 167] 1010 0111 A7 [ 166] 1010 0110 A6 [ 165] 1010 0101 A5 [ 164] 1010 0100 A4 [ 163] 1010 0011 A3 [ 162] 1010 0010 A2 [ 161] 1010 0001 A1 [ 160] 1010 0000 A0 [ 159] 1001 1111 9F [ 158] 1001 1110 9E [ 157] 1001 1101 9D [ 156] 1001 1100 9C [ 155] 1001 1011 9B [ 154] 1001 1010 9A [ 153] 1001 1001 99 [ 152] 1001 1000 98 [ 151] 1001 0111 97 [ 150] 1001 0110 96 [ 149] 1001 0101 95 [ 148] 1001 0100 94 [ 147] 1001 0011 93 [ 146] 1001 0010 92 [ 145] 1001 0001 91 [ 144] 1001 0000 90 [ 143] 1000 1111 8F [ 142] 1000 1110 8E [ 141] 1000 1101 8D [ 140] 1000 1100 8C [ 139] 1000 1011 8B [ 138] 1000 1010 8A [ 137] 1000 1001 89 [ 136] 1000 1000 88 [ 135] 1000 0111 87 [ 134] 1000 0110 86 [ 133] 1000 0101 85 [ 132] 1000 0100 84 [ 131] 1000 0011 83 [ 130] 1000 0010 82 [ 129] 1000 0001 81 [ 128] 1000 0000 80 [ 127] 0111 1111 7F [ 126] 0111 1110 7E [ 125] 0111 1101 7D [ 124] 0111 1100 7C [ 123] 0111 1011 7B [ 122] 0111 1010 7A [ 121] 0111 1001 79 [ 120] 0111 1000 78 [ 119] 0111 0111 77 [ 118] 0111 0110 76 [ 117] 0111 0101 75 [ 116] 0111 0100 74 [ 115] 0111 0011 73 [ 114] 0111 0010 72 [ 113] 0111 0001 71 [ 112] 0111 0000 70 [ 111] 0110 1111 6F [ 110] 0110 1110 6E [ 109] 0110 1101 6D [ 108] 0110 1100 6C [ 107] 0110 1011 6B [ 106] 0110 1010 6A [ 105] 0110 1001 69 [ 104] 0110 1000 68 [ 103] 0110 0111 67 [ 102] 0110 0110 66 [ 101] 0110 0101 65 [ 100] 0110 0100 64 [ 99] 0110 0011 63 [ 98] 0110 0010 62 [ 97] 0110 0001 61 [ 96] 0110 0000 60 [ 95] 0101 1111 5F [ 94] 0101 1110 5E [ 93] 0101 1101 5D [ 92] 0101 1100 5C [ 91] 0101 1011 5B [ 90] 0101 1010 5A [ 89] 0101 1001 59 [ 88] 0101 1000 58 [ 87] 0101 0111 57 [ 86] 0101 0110 56 [ 85] 0101 0101 55 [ 84] 0101 0100 54 [ 83] 0101 0011 53 [ 82] 0101 0010 52 [ 81] 0101 0001 51 [ 80] 0101 0000 50 [ 79] 0100 1111 4F [ 78] 0100 1110 4E [ 77] 0100 1101 4D [ 76] 0100 1100 4C [ 75] 0100 1011 4B [ 74] 0100 1010 4A [ 73] 0100 1001 49 [ 72] 0100 1000 48 [ 71] 0100 0111 47 [ 70] 0100 0110 46 [ 69] 0100 0101 45 [ 68] 0100 0100 44 [ 67] 0100 0011 43 [ 66] 0100 0010 42 [ 65] 0100 0001 41 [ 64] 0100 0000 40 [ 63] 0011 1111 3F [ 62] 0011 1110 3E [ 61] 0011 1101 3D [ 60] 0011 1100 3C [ 59] 0011 1011 3B [ 58] 0011 1010 3A [ 57] 0011 1001 39 [ 56] 0011 1000 38 [ 55] 0011 0111 37 [ 54] 0011 0110 36 [ 53] 0011 0101 35 [ 52] 0011 0100 34 [ 51] 0011 0011 33 [ 50] 0011 0010 32 [ 49] 0011 0001 31 [ 48] 0011 0000 30 [ 47] 0010 1111 2F [ 46] 0010 1110 2E [ 45] 0010 1101 2D [ 44] 0010 1100 2C [ 43] 0010 1011 2B [ 42] 0010 1010 2A [ 41] 0010 1001 29 [ 40] 0010 1000 28 [ 39] 0010 0111 27 [ 38] 0010 0110 26 [ 37] 0010 0101 25 [ 36] 0010 0100 24 [ 35] 0010 0011 23 [ 34] 0010 0010 22 [ 33] 0010 0001 21 [ 32] 0010 0000 20 [ 31] 0001 1111 1F [ 30] 0001 1110 1E [ 29] 0001 1101 1D [ 28] 0001 1100 1C [ 27] 0001 1011 1B [ 26] 0001 1010 1A [ 25] 0001 1001 19 [ 24] 0001 1000 18 [ 23] 0001 0111 17 [ 22] 0001 0110 16 [ 21] 0001 0101 15 [ 20] 0001 0100 14 [ 19] 0001 0011 13 [ 18] 0001 0010 12 [ 17] 0001 0001 11 [ 16] 0001 0000 10 [ 15] 0000 1111 0F [ 14] 0000 1110 0E [ 13] 0000 1101 0D [ 12] 0000 1100 0C [ 11] 0000 1011 0B [ 10] 0000 1010 0A [ 9] 0000 1001 09 [ 8] 0000 1000 08 [ 7] 0000 0111 07 [ 6] 0000 0110 06 [ 5] 0000 0101 05 [ 4] 0000 0100 04 [ 3] 0000 0011 03 [ 2] 0000 0010 02 [ 1] 0000 0001 01 [ 0] 0000 0000 00

 

== ランキングに参加しています。ぜひクリックお願いします ==

プログラム ブログランキングへ
にほんブログ村 IT技術ブログへ
にほんブログ村

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください