[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
== ランキングに参加しています。ぜひクリックお願いします ==
[Oracle] 16進数表示する [C#] TreeViewのノードを右クリックでも選択させる