Escolar Documentos
Profissional Documentos
Cultura Documentos
!i?
22/03/2014 10:40:56
Byte bit
Bit significa binary digit, es decir que puede almacenar dos posibles valores: 0 1, o si prefiere verdadero o falso.
Fsicamente esto se logra llevando un voltaje en cada celda.
Csar Liza Avila
22/03/2014 10:40:56
0 10 0 1 1 11
7 6 5 4 3 2 1 0
1 1 1 11 1 11
1 1 1 11 1 11
1 1 1 11 1 11
1 0 1 10 0 01
1 0 0 0 00 0 0 0 0 0 0 00 0 00
0 0 0 00 0 00
0 0 0 00 0 00
22/03/2014 10:40:56
0 0 0 00 0 00
0 0 0 00 0 00
0 0 0 00 0 00
0 10 0 1 1 11
1 1 1 11 1 11
1 1 1 11 1 11
1 1 1 11 1 11
1 0 1 10 0 01
Estos bits son los que se encuentran en memoria cuando almacenamos -79.
Csar Liza Avila
22/03/2014 10:40:56
Escriba un programa que lea un nmero # include <iostream.h> y muestre los bits de su valor positivo y # include <iomanip.h> negativo, tal como se almacenan en void impBinario(int); memoria. void main(void) { int n; cout<<"ingrese nro: "; cin>>n; cout<<"10987654321098765432109876543210"<<endl; impBinario( n); impBinario(-n); } void impBinario(int n) { unsigned int mask = 0x80000000; for (int j = 0; j<32; j++) { if ( (n & mask) > 0 ) cout<< 1; else cout<< 0; mask = (mask >> 1); } cout<<endl; } Csar Liza Avila 22/03/2014 10:40:56 6
22/03/2014 10:40:56
Carcteres no imprimibles Nombre Dec Hex Nulo 0 00 Inicio de cabecera 1 01 Inicio de texto 2 02 Fin de texto 3 03 Fin de transmisin 4 04 enquiry 5 05 acknowledge 6 06 Campanilla (beep) 7 07 backspace 8 08 Tabulador horizontal 9 09 Salto de lnea 10 0A Tabulador vertical 11 0B Salto de pgina 12 0C Retorno de carro 13 0D Shift fuera 14 0E Shift dentro 15 0F Escape lnea de datos 16 10 Control dispositivo 1 17 11 Control dispositivo 2 18 12 Control dispositivo 3 19 13 Control dispositivo 4 20 14 neg acknowledge 21 15 Sincronismo 22 16 Fin bloque transmitido 23 17 Cancelar 24 18 Fin medio 25 19 Sustituto 26 1A Escape 27 1B Separador archivos 28 1C Separador grupos 29 1D Separador registros 30 1E Separador unidades 31 1F
Car. NUL SOH STX ETX EOT ENQ ACK BEL BS HT LF VT FF CR SO SI DLE DC1 DC2 DC3 DC4 NAK SYN ETB CAN EM SUB ESC FS GS RS US
Dec Hex 32 20 33 21 34 22 35 23 36 24 37 25 38 26 39 27 40 28 41 29 42 2A 43 2B 44 2C 45 2D 46 2E 47 2F 48 30 49 31 50 32 51 33 52 34 53 35 54 36 55 37 56 38 57 39 58 3A 59 3B 60 3C 61 3D 62 3E 63 3F
Dec 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
Hex 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F
Car. ` 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
22/03/2014 10:40:57
UNICODE
Unicode es un estndar cuyo objetivo es proporcionar el medio por el cual un texto en cualquier forma e idioma pueda ser codificado para el uso informtico.
El estndar ha sido implementado en un nmero considerable de tecnologas recientes, que incluyen XML, Java, Net, Sistemas Operativos como Linux, Windows y otros. Actualmente esta en su versin 5.0
Los UNICODE en MS-Office
22/03/2014 10:40:57
10
-Es por esto que el espacio ocupado es uno mas que el nmero de letras que forman la cadena. -Asimismo, cin y cout son capaces de colocar y reconocer el terminador NULL.
Csar Liza Avila
22/03/2014 10:40:57
11
31 30 29 28 27 26 25 24
23 22 21 20 19 18 17 16
15 14 13 12 11 10 9 8
7 6 5 4 3 2 1 0
signo
exponente
mantisa
22/03/2014 10:40:57
12
Lea un nmero en punto flotante de simple precisin y muestre cada uno de sus bits.
CODIFICACION EN C++ # include <iostream.h> struct simplePrecision { unsigned mantisa : 23; unsigned exponente: 8; unsigned signo : 1; }; union simplePrecisionUnion { float nro; struct simplePrecision pf; unsigned int n; }; void impBits(unsigned int n); void main(void) { union simplePrecisionUnion ptoF; cout<<"Ingrese un flotante:"; cin>>ptoF.nro; cout<<"Signo :" << ptoF.pf.signo << endl; cout<<"Exponente:" << ptoF.pf.exponente << endl; cout<<"Mantisa :" << ptoF.pf.mantisa << endl; impBits(ptoF.n); Csar Liza Avila }
void impBits(unsigned int n) { unsigned int mask = 0x80000000; int j; // imprime el bit de signo cout<<"Signo: "; if ( (n & mask) > 0 ) cout<< 1; else cout<< 0; mask = (mask >> 1); cout<<endl; // imprime los bits del exponente cout<<"Exponente: "; for (j = 0; j<8; j++) { if ( (n & mask) > 0 ) cout<< 1; else cout<< 0; mask = (mask >> 1); } cout<<endl; // imprime los bits de la mantisa cout<<"Mantisa: "; for (j = 0; j<23; j++) { if ( (n & mask) > 0 ) cout<< 1; else cout<< 0; mask = (mask >> 1); } cout<<endl; 22/03/2014 10:40:57 13 }
Signo: Como est en 1 el nmero ser negativo. Exponente: En decimal ser: 10000101 = 27 + 22 + 20 = 133 Pero como est sesgado a 127, hay que restarle este valor 133-127 = 6, que viene a ser el verdadero exponente. (Este sesgo es necesario para poder tener exponentes negativos, por ejemplo si los bits almacenados fueran 120, entonces el exponente sera 120-127 = -7)
22/03/2014 10:40:57
14
Mantisa: Cuyo valor en bits es 11101111000000000000000, se interpreta como la parte fraccionaria, por lo tanto ser: 1 1 1 1 1 1 1 fraccin = --- + --- + --- + 0 + --- + --- + --- + --- + 0 2 22 23 25 26 27 28 = (27 + 26 + 25 + 23 + 22 + 21 + 20 ) / 28 Obtencin del nmero: Por defecto todo nmero en este formato tiene un 1 implcito, que hay que sumar a la parte fraccionaria, luego lo multiplicamos por 2 elevado al exponente obtenido (6), y aadirle el signo, por lo que el nmero ser: nro = - [ 1 + (27 + 26 + 25 + 23 + 22 + 21 + 20 ) / 28 ]* 26 = - (28 + 27 + 26 + 25 + 0 +23 + 22 + 21 + 20 ) / 22 = - (256 + 128 + 64 + 32 + 8 + 4 + 2 + 1) / 22 = - 495 / 4 = - 123.75
22/03/2014 10:40:57
15
...
signo exponente mantisa
22/03/2014 10:40:57
16