2. Representación de la Información en computadoras

Anuncio
2. Representación de la Información en computadoras
2.1 Introducción
Las computadoras digitales han hecho posible muchos avances científicos,
industriales y comerciales que de otra manera nunca se hubieran alcanzado. La
propiedad más sorprendente de una computadora digital es su generalidad. Puede seguir
una secuencia de instrucciones, denominada programa, que opera según la información
dada.
La computadora digital de propósito general es el ejemplo mejor conocido de un
sistema digital. Las primeras computadoras digitales se usaron principalmente para
cálculos numéricos. En este caso, los elementos discretos que se utilizan son dígitos.
Para esta aplicación surgió el término de computadora digital.
Los elementos discretos de información se representan en un sistema digital
mediante cantidades físicas denominadas señales. Las señales eléctricas como voltajes y
corrientes son las más comunes. Las señales en todos los sistemas digitales en la
actualidad tienen sólo dos valores discretos y se dicen que son binarios.
Los números binarios son los más utilizados en las computadoras debido a la
naturaleza de los dispositivos electrónicos. Es más sencillo construir un elemento que
pueda estar normalmente abierto o cerrado (biestable) que otro de 10 estados posibles.
La representación binaria se seguirá utilizando hasta que se descubra un dispositivo
naturalmente dotado de perfecta estabilidad en 10 estados.
2.2 Sistemas de numeración
En los sistemas de numeración no posicionales, el valor de una cifra no
depende de la posición que ésta ocupe dentro del número. El ejemplo más conocido es el
de los números romanos. La representación del número decimal 233 en el sistema de
números romanos es:
CCXXXIII
Donde
una C equivale a 100
una X equivale a 10
e I a la unidad
En cambio en los sistemas de numeración posicionales el valor de una cifra
depende del lugar que ésta ocupe dentro del número. Los sistemas decimal, hexadecimal,
octal y binario son ejemplos de sistemas de numeración posicionales. En el número
decimal 233 el dígito 3 figura dos veces, pero el de la derecha representa 3 unidades
mientras que el de la izquierda representa dos decenas.
Generalizando, en un sistema de numeración posicional de base b, la
representación de un número se define a partir de la regla:
(… a3 a2 a1 a0.a-1 a-2 a-3 …)b = … + a2 b2 + a1 b1 + a0 b0 + a-1 b-1 + a-2 b-2 + a-3 b-3 +
…
Ejemplo: El número 6923,72 puede obtenerse como la suma:
6000
900
unidades de mil
centenas
20
3
0.7
0.02
----------6923.72
decenas
unidades
décimas
centémimas
Es decir, 6923.72 = 6*103+9*102+2*101+3*100+7*10-1+2*10-2
Nótese que cuando b es diez y los ai se eligen del conjunto de dígitos ( 0, 1, 2, 3, 4,
5, 6, 7, 8, 9 ), pero cuando el sistema es base x se eligen dígitos del conjunto
comprendido entre 0 y x-1.
El punto que aparece entre los dígitos a0 y a-1 se denomina punto fraccionario.
Cuando b es 10 se lo llama punto decimal y cuando b es 2, punto binario.
Ejemplos en otras bases
(423.1)6 = 4×62 + 2×61 + 3×60 + 1×6-1
(427.2)8 = 4×82 + 2×81 + 3×70 + 2×8-1
(101.1)2 = 1×22 + 0×21 + 1×20 + 1×2-1
(923.1)10 = 9×102 + 2×101 + 3×100 + 1×10-1
= (159.17)10
= (279.25)10
= (5.5)10
= (923.1)10
Observe el siguiente ejercicio de conversión de números enteros en distintas bases (base
10, base 4, base 8 y base 16) a números decimales.
base
10
2
4
8
16
5
4
3
2 1
100000 10000 1000 100 10
32
16
8
4 2
1024 256
64
16 4
32768 4096
512
64 8
104857 65536 4096 256 16
6
Tabla 1-a
base^n
0
1
1
1
1
1
8
1
número
28 b10
10101
b2
30321
b4
63170
b8
2BC6
b16
1
0
1
2
0
3
0
3
2
1
6
3
1
7
0
11 12
6
2
Tabla 1-b
número
28 b10
10101
b2
30321
b4
0
0
0
16
0
0
0
768
0
0 20
4 0
48
8
Suma b10
8
28
1
21
1
825
63170
b8
2BC6
b16
0 24576
1536
64 56
0
26232
0
8192 2816 192
6
11206
0
Tabla 1-c
Nótese que la tabla 1-a representa el peso (en decimal) de cada posición (columna) para
cada base. Por ejemplo, para la base 4 la tercer columna .representa un peso 16, siendo
en base 10 la columna de las centenas. En la tabla 1-b se copiaron distintos números en
distintas bases. Finalmente, la tabla 1-c muestra los números de la tabla 1-b convertidos a
base decimal (columna suma b10) para lo cual se multiplicó cada digito por su
correspondiente peso y luego se sumaron los resultados parciales (por filas) a fin de
obtener el número decimal equivalente a cada caso. Obsérvese que el desarrollo anterior
se obtiene a partir de aplicar la regla de la representación de un número en un sistema
posicional.
A continuación, se presenta el mismo desarrollo pero utilizando parte fraccionaria:
Base
4
3
2
10 10000 1000 100
2
16
8
4
256
64
8
4096 512
16 65536 4096
Número
28,56 b10
10101,0011
b2
30321,123 b4
63170,0007
b8
2BC6,BACAb
16
1
10
0
-1
-2
-3
-4
1 0,100 0,010 0,001 0,00010
00
4
2 1 0,500 0,250 0,125 0,06250
00
16
4 1 0,250 0,063 0,016 0,00390
63
64
8 1 0,125 0,016 0,002 0,00024
41
256 16 1 0,063 0,004 0,000 0,00001
53
n
Tabla 2- base
a
1
0
1
2
0
8
1
5
0
6
0
1
1
3
6
0
3
3
1
2
7
1
0
1
0
2
0
3
0
7
2
11
12
6
11
10
12
10
Tabla 2b
Número
28,56 b10
0
0
0 20
10101,0011
16
0
4
0
b2
30321,123 b4
768
0 48
8
63170,0007
24576 1536 64 56
b8
2BC6,BACA
0 8192 2816 192
b16
8 0,500 0,060 0,000
1 0,000 0,000 0,125
1 0,250 0,125 0,047
0 0,000 0,000 0,000
6 0,688 0,039 0,003
Suma
b10
0,0000 28,560
0,0625 21,188
0,0000 825,422
0,0017 26232,00
2
0,0002 11206,73
0
Tabla 2c
2.3 Sistemas de numeración usuales en informática
2.3.1 Hexadecimal: se compone de 16 dígitos, siendo estos: 0, 1, 2, 3, 4, 5, 6, 7, 8,
9, A, B, C, D, E, F
Para pasar una cifra expresada en hexadecimal a decimal hay que aplicarle la
fórmula de ponderación, como se ve en el ejemplo siguiente:
(1AC05.B)16 a decimal:
1*164 + 10*163 + 12*162 + 0*161 + 5*160 + 11*16-1 = (109573.69)10
2.3.2 Octal: se compone de 8 dígitos, siendo estos: 0, 1, 2, 3, 4, 5, 6, 7
(753)8 a decimal:
7*82 + 5*81 + 3*80 = (491)10
2.3.3 Binario: Es el sistema de numeración con que operan internamente las
computadoras digitales. Se compone de 2 dígitos, siendo estos: 0, 1. A cada dígito
se lo denomina bit.
(101.01)2 a decimal:
1*22 + 0*21 + 1*20 + 0*2-1 + 1*2-2 = (5.25)10
Decimal
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Binario
0000
0001
0010
0011
0100
0101
0110
0111
1000
1001
1010
1011
1100
1101
1110
1111
Octal
0
1
2
3
4
5
6
7
10
11
12
13
14
15
16
17
Hexadecimal
0
1
2
3
4
5
6
7
8
9
A
B
C
D
E
F
Tabla de equivalencias de cifras entre sistemas
2.4 Transformaciones entre sistemas de numeración
2.4.1 Decimal a binario
Por divisiones sucesivas del número decimal entre 2. El último cociente es el
bit de más a la izquierda y los demás bits son los sucesivos restos hallados, desde
el último hasta llegar al primer resto, que es el bit de más a la derecha.
(108)10 -> ( x )2
108 / 2
0
54 / 2
0
27 / 2
1
13 / 2
1
6/2
0
3/2
1
1
Se arma la cifra resultado con el resultado de la última división y los restos
desde abajo hacia arriba ( 1101100 )2
2.4.2 Binario a octal
Agrupar los bits en grupos de tres cifras binarias a partir del punto decimal a
la derecha y a la izquierda. Cada grupo se convierte en su correspondiente cifra
octal.
( 1101100 )2 -> ( x )8
1 5 4
1 101 100 -> ( 154 )8
2.4.3 Octal a binario
Convertir individualmente cada cifra octal a tres bits.
( 623 )8 -> ( x )2
6
110
2
010
3
011 -> ( 110010011 )2
2.4.4 Binario a hexadecimal
Agrupar los bits en grupos de cuatro cifras binarias a partir del punto decimal
a la derecha y a la izquierda. Cada grupo se convierte en su correspondiente cifra
hexadecimal.
( 111011001 )2 -> ( x )16
1
D
9
0001 1101 1001 -> ( 1D9 )16
2.4.5 Hexadecimal a binario
Convertir individualmente cada cifra hexadecimal a cuatro bits.
( BACA )16 -> ( x )2
B
A
C
A
1011 1010 1100 1010 -> ( 1011101011001010 )2
2.5 Operaciones aritméticas en el sistema binario
Las operaciones aritméticas básicas en el sistema binario son las uma, la resta, el
producto y la división:
Suma aritmética
0+0
0+1
1+0
1+1
=0
=1
=1
= 0 y me "llevo" 1, dado que 1 + 1 = 10
Resta aritmética
0-0
0-1
1-0
1-1
=0
= 1 y "debo" 1
=1
=0
Producto aritmético
0*0
0*1
1*0
1*1
=0
=0
=0
=1
División aritmética
Ejemplos
En binario
En decimal
00011
+01101
--------10000
3
+ 13
---16
En binario
En decimal
111
+111
111 7
111
--------11100
+
7
---28
En binario
-
0111
0011
7
7
En decimal
-
7
3
--------0100
---4
En binario
1101
0010
--------1011
En decimal
13
2
---11
En binario
0110
*
0111
--------0110
0110
0110
0000
------------------0101010
En decimal
*
6
7
---42
2.6 Operaciones lógicas en el sistema binario
Un dígito binario además de representar una cifra en base dos, también puede
interpretarse como un valor booleano (dato lógico) que solo admite uno de dos valores de
verdad: verdadero/falso o +/- o si/no o 1/0. Tal característica se utiliza a los efectos de
modelar el comportamiento interno de una computadora digital.
Así, además de realizar operaciones aritméticas es posible hacer operaciones
lógicas sobre cifras booleanas. Las operaciones se realizan a nivel de bit y pueden ser 1 o
2 operandos. El cero corresponde al valor de verdad falso y el 1 al verdadero.
Operador NOT
X
NOT (X)
0
1
1
0
X
0
0
1
1
Operador AND
Y
X AND Y
0
0
1
0
0
0
1
1
X
0
0
1
1
Operador OR
Y
X OR Y
0
0
1
1
0
1
1
1
X
0
0
1
1
Operador XOR
Y
X XOR Y
0
0
1
1
0
1
1
0
Ahora se presenta una aplicación de las operaciones lógicas: Sean I y J dos
variables numéricas enteras, cuyos valores son 6 y 12 respectivamente, se indica el valor
de verdad de los siguientes predicados.
a)
2 * I <= J
Verdadero
b)
2*I<1
Falso
c)
I > 0 AND I < 10
(1 AND 1)
Verdadero
d)
I > 25 OR (I < 50 AND J < 50)
(0 OR (1 AND 1))
(0 OR 1)
Verdadero
e
I < 4 XOR J > 5
0 XOR 1
Verdadero
f)
NOT (I > 6)
Verdadero
g)
NOT (J > 6)
Falso
Las funciones lógicas trabajan sólo con operandos de un solo bit, como las computadoras
utilizan grupos de 8, 16 ó 32 bits, se necesita extender la definición de éstas funciones
para trabajar con más de dos bits. Las funciones lógicas en los procesadores actuales
operan en una base de bit por bit (en inglés bitwise). Dados dos valores en determinada
posición, las funciones producen el resultado de la respectiva posición, por ejemplo, para
calcular la operación lógica AND en los siguientes dos números (de ocho bits) se debe
ejecutar la operación lógica AND en cada columna, independientemente de las demás:
AND
1011 0101
1110 1110
--------1010 0100
Ésta forma de ejecutar bit por bit (bitwise) puede fácilmente ser aplicada a otras
operaciones lógicas como ser OR y XOR.
Ejemplos
OR
0110
1010
---1110
XOR
0110
1010
---1100
2.7 La información y su representación
Los datos son conjuntos de símbolos utilizados para expresar o representar un
valor numérico, un hecho, un objeto o una idea en la forma adecuada para ser tratado. Un
dato es cualquier objeto manipulable por la computadora. Los datos pueden ser:

Adquiridos directamente por la computadora, como sería, por ejemplo, la
detección electrónica de temperatura o de una presión excesiva.

Aportados por el usuario en forma de caracteres, es decir con letras,
números, caracteres especiales (símbolos ortográficos, aritméticos y otros).
La codificación es una operación de transformación que representa los elementos
de un conjunto mediante los de otro, de forma que a cada elemento del primer conjunto le
corresponde un único elemento del segundo.
La información representada en un alfabeto de entrada debe ser transformada
(codificada) a un alfabeto de salida que entienda el computador. La codificación debe
realizarse de manera que a cada elemento del primer alfabeto le corresponda un
elemento distinto del segundo.
Información
(alfabeto de entrada)
Sistema
de
Codificación
Información
codificada
(alfabeto de salida)
Todo sistema de codificación lleva consigo un código que se define como la ley de
correspondencia biunívoca entre los datos que se van a representar y su codificación.
Humanos
ASCII
A
65
M
77
N
78
8
56
=
61
Algunas de las características de un código es el conjunto de caracteres y el
número de bits que se utilizan para codificar un carácter (longitud del código). El número
máximo del conjunto de carácteres que podemos representar es longitud.
En el interior de la computadora la información se almacena y se transfiere de un
lugar a otro en forma codificada. El código utilizado usa sólo dos valores (código binario)
representados por 0 y 1. En la entrada y la salida de la computadora se efectúan
automáticamente los cambios de códigos para que en el exterior la información sea
directamente entendida por el usuario.
La unidad más elemental de información en un ordenador es un valor binario, un
cero o un uno, un bit. Un bit es una posición de memoria que toma el valor 0 o 1. Así
pues, la mínima unidad de información en el interior de una computadora es el bit.
La información se representa por medio de caracteres (letras mayúsculas y
minúsculas, números, caracteres de puntuación y especiales). Pero la computadora sólo
entiende secuencias binarias, así que dicha información debe codificarse internamente en
notación binaria (en bits). Por lo tanto, a cada carácter le corresponderá cierto número de
bits: una serie de bits distinta.
Un byte es el mínimo número de bits necesarios para almacenar o representar
un carácter en una memoria de computadora (es la menor cantidad de información
direccionable sobre una memoria). Un byte suele corresponder a 8 bits.
La capacidad de almacenamiento de una computadora o de un soporte de
información (disco rígido, CDROM, etc) se mide en bytes, pero suele utilizarse múltiplos:
1 kilobyte
1 megabyte
1 gigabyte
1 terabyte
1 KB
1 MB
1 GB
1 TB
210 Bytes
210 KBytes
210 MBytes
210 GBytes
1024 Bytes
1024 KBytes
1024 MBytes
1024 GBytes
1024 bytes
1.048.576 bytes
1.073.741.824 bytes
1.099.511.627.776 bytes
La información que se brinda a la computadora es en la forma normal que usan los
seres humanos, es decir, con la ayuda de un alfabeto o conjunto de símbolos
(caracteres). Los caracteres de texto son los siguientes:
a) Alfanuméricos:
a.1) Alfabéticos: A B C ...Y Z a b c ... y z
a.2) Numéricos: 0 1 2 3 4 5 6 7 8 9
b) Especiales (ortográficos, aritméticos y otros)
( ) , * / ; : + Ñ ñ = ! ? . » “ & > # < [ Ç ç ] sp
Para representar cualquier carácter (alfabético, numérico o especial) en el interior
de una computadora es necesario un sistema de codificación como el ASCII, ANSI o
UNICODE. Tales alfabetos asocian a cada carácter una determinada combinación de
bits.
2.7.1 El código EBCDIC
El código EBCDIC (Extender Binary Coded Decimal Interchange Code) es
otro de los códigos más utilizados. Cada carácter se representa con un número de
8 bits. Este código fue inicialmente desarrollado por IBM para usar en sus
computadoras, pero luego lo adoptaron otros fabricantes.
2.7.2 El código ASCII
El código ASCII (American Standard Code for Information Interchange), fue
establecido por el Instituto Nacional Americano de Estándares (ANSI) y es el
sistema de codificación más difundido para PCs y comunicación de datos. En
ASCII, la B y el 3 se representan digitalmente en la computadora como 1000010 y
0110011, respectivamente. Es un código de 7 bits que permite codificar 2^7 = 128
caracteres y aunque los idiomas tienen mucho menos de 128 caracteres
imprimibles, se necesitan configuraciones adicionales de bits para representar una
gran variedad de caracteres especiales, algunos muy comunes y otros no tanto y
para indicarle a la computadora una gran variedad de actividades como hacer
sonar un timbre o pedirle que acepte un dato (enter). Esta necesidad ha hecho que
se utilice un código ASCII ampliado de 8 bits, para permitir codificar 2^8 = 256
caracteres. Existen varios caracteres del código ASCII, llamados caracteres de
control, que tienen significados especiales. Se usan para transmisiones de datos
en serie de una máquina a otra e indican cosas como fin de línea, avance de carro,
etc.
Oct Dec
0
0
01
1
02
2
03
3
04
4
05
5
06
6
07
7
010
8
011
9
012 10
013 11
014 12
015 13
016 14
017 15
020 16
021 17
022 18
023 19
024 20
025 21
026 22
027 23
030 24
031 25
032 26
033 27
034 28
035 29
Hex Caracter
0x00 NUL \0
0x01 SOH
0x02 STX
0x03 ETX
0x04 EOT
0x05 ENQ
0x06 ACK
0x07 BEL
0x08 BS \b
0x09 HT \t
0x0A LF \n
0x0B VT
0x0C FF \f
0x0D CR \r
0x0E SO
0x0F SI
0x10 DLE
0x11 DC1
0x12 DC2
0x13 DC3
0x14 DC4
0x15 NAK
0x16 SYN
0x17 ETB
0x18 CAN
0x19 EM
0x1A SUB
0x1B ESC
0x1C FS
0x1D GS
Oct Dec
0100 64
0101 65
0102 66
0103 67
0104 68
0105 69
0106 70
0107 71
0110 72
0111 73
0112 74
0113 75
0114 76
0115 77
0116 78
0117 79
0120 80
0121 81
0122 82
0123 83
0124 84
0125 85
0126 86
0127 87
0130 88
0131 89
0132 90
0133 91
0134 92
0135 93
Hex Caracter
0x40 @
0x41 A
0x42 B
0x43 C
0x44 D
0x45 E
0x46 F
0x47 G
0x48 H
0x49 I
0x4A J
0x4B K
0x4C L
0x4D M
0x4E N
0x4F O
0x50 P
0x51 Q
0x52 R
0x53 S
0x54 T
0x55 U
0x56 V
0x57 W
0x58 X
0x59 Y
0x5A Z
0x5B [
0x5C \
0x5D ]
036
037
040
041
042
043
044
045
046
047
050
051
052
053
054
055
056
057
060
061
062
063
064
065
066
067
070
071
072
073
074
075
076
077
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
0x1E
0x1F
0x20
0x21
0x22
0x23
0x24
0x25
0x26
0x27
0x28
0x29
0x2A
0x2B
0x2C
0x2D
0x2E
0x2F
0x30
0x31
0x32
0x33
0x34
0x35
0x36
0x37
0x38
0x39
0x3A
0x3B
0x3C
0x3D
0x3E
0x3F
RS
US
SPACE
!
"
#
$
%
&
'
(
)
*
+
,
.
/
0
1
2
3
4
5
6
7
8
9
:
;
<
=
>
?
0136
0137
0140
0141
0142
0143
0144
0145
0146
0147
0150
0151
0152
0153
0154
0155
0156
0157
0160
0161
0162
0163
0164
0165
0166
0167
0170
0171
0172
0173
0174
0175
0176
0177
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
0x5E
0x5F
0x60
0x61
0x62
0x63
0x64
0x65
0x66
0x67
0x68
0x69
0x6A
0x6B
0x6C
0x6D
0x6E
0x6F
0x70
0x71
0x72
0x73
0x74
0x75
0x76
0x77
0x78
0x79
0x7A
0x7B
0x7C
0x7D
0x7E
0x7F
^
_
`
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
{
|
}
~
DEL
En una cadena de caracteres cada carácter ocupa 1 byte y se representa
según el código de caracteres que se esté utilizando. La cadena de caracteres de 4
bytes 48 4E 4C 41 representa, según la tabla de códigos ASCII, a la cadena
"HOLA."
2.7.1 El código ANSI
Microsoft Windows usa el sistema de codificación ANSI de 8 bit, norma
desarrollada por el Instituto Nacional de Estándares de Estados Unidos y que permite
compartir texto entre aplicaciones de Windows. Al igual que el ASCII ampliado, las
primeras 128 combinaciones de ANSI son iguales a las del ASCII, pero las 128 siguientes
están definidos para satisfacer las necesidades de las aplicaciones Windows.
2.7.1 El Unicode: 65.536 posibilidades
Patrocinada por IBM, Microsoft y Sun Microsystems, se desarrolló Unicode,
un sistema de codificación uniforme de 16 bits (2 bytes = 2 16 = 65.536 caracteres). Este
sistema permite comunicarse computadoras y aplicaciones entre sí con mayor facilidad y
se adapta a la mayoría de los idiomas de todo el mundo.
2.7.3.1 Reglas de orden de caracteres ASCII
1. Los caracteres correspondientes a dígitos numéricos están en su
orden natural:
"0"<"1"<"2"<"3"<"4"<"5"<"6"<"7"<"8"<"9"
2. Las letras mayúsculas continúan el orden alfabético:
"A"<"B"<"C"<"D"<, . . . . . .,<"Z"
3. Luego continúan las letras minúsculas, pero sus códigos son
mayores que las letras mayúsculas, por lo tanto se ordenan antes.
"a"<"b"<"c"<"d"<, . . . . . .,<"z"
y
4. El resto de los caracteres.
"a">"M">"C">"B"
Descargar