add batch remove batch split batch comment selection show hidden batches hide batch highlight batch
db<>fiddle
donate feedback about
By using db<>fiddle, you agree to license everything you submit by Creative Commons CC0.
ALTER SESSION SET NLS_DATE_FORMAT = 'YYYY-MM-DD HH24:MI:SS';
CREATE TABLE table_name (value NUMBER);
INSERT INTO table_name (value)
SELECT POWER(10, 5 * (LEVEL - 1) - 20) FROM DUAL CONNECT BY LEVEL <= 10 UNION ALL
SELECT -POWER(10, 5 * (LEVEL - 1) - 20) FROM DUAL CONNECT BY LEVEL <= 10
20 rows affected
WITH find_byte (value, dump_value, first_byte) AS (
SELECT value,
DUMP(value) AS dump_value,
TO_NUMBER(REGEXP_SUBSTR(DUMP(value), ': (\d+)', 1, 1, NULL, 1)) AS first_byte
FROM table_name
)
SELECT value,
dump_value,
first_byte,
CASE
WHEN BITAND(first_byte, 128) = 128
THEN 'Y'
ELSE 'N'
END AS is_positive,
CASE
WHEN BITAND(first_byte, 128) = 128
THEN first_byte
ELSE BITXOR(first_byte, 255)
END - 128 - 65 AS exponent,
FLOOR(LOG(100, ABS(value))) AS expected_exponent
FROM find_byte;
VALUE DUMP_VALUE FIRST_BYTE IS_POSITIVE EXPONENT EXPECTED_EXPONENT
.00000000000000000001 Typ=2 Len=2: 183,2 183 Y -10 -10
.000000000000001 Typ=2 Len=2: 185,11 185 Y -8 -8
.0000000001 Typ=2 Len=2: 188,2 188 Y -5 -5
.00001 Typ=2 Len=2: 190,11 190 Y -3 -3
1 Typ=2 Len=2: 193,2 193 Y 0 0
100000 Typ=2 Len=2: 195,11 195 Y 2 2
10000000000 Typ=2 Len=2: 198,2 198 Y 5 5
1000000000000000 Typ=2 Len=2: 200,11 200 Y 7 7
100000000000000000000 Typ=2 Len=2: 203,2 203 Y 10 10
10000000000000000000000000 Typ=2 Len=2: 205,11 205 Y 12 12
-.00000000000000000001 Typ=2 Len=3: 72,100,102 72 N -10 -10
-.000000000000001 Typ=2 Len=3: 70,91,102 70 N -8 -8
-.0000000001 Typ=2 Len=3: 67,100,102 67 N -5 -5
-.00001 Typ=2 Len=3: 65,91,102 65 N -3 -3
-1 Typ=2 Len=3: 62,100,102 62 N 0 0
-100000 Typ=2 Len=3: 60,91,102 60 N 2 2
-10000000000 Typ=2 Len=3: 57,100,102 57 N 5 5
-1000000000000000 Typ=2 Len=3: 55,91,102 55 N 7 7
-100000000000000000000 Typ=2 Len=3: 52,100,102 52 N 10 10
-10000000000000000000000000 Typ=2 Len=3: 50,91,102 50 N 12 12