<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns="http://www.w3.org/TR/REC-html40">

<head>
<meta http-equiv=Content-Type content="text/html; charset=iso-8859-1">
<meta name=Generator content="Microsoft Word 11 (filtered medium)">
<!--[if !mso]>
<style>
v\:* {behavior:url(#default#VML);}
o\:* {behavior:url(#default#VML);}
w\:* {behavior:url(#default#VML);}
.shape {behavior:url(#default#VML);}
</style>
<![endif]-->
<style>
<!--
 /* Font Definitions */
 @font-face
        {font-family:Tahoma;
        panose-1:2 11 6 4 3 5 4 4 2 4;}
 /* Style Definitions */
 p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0cm;
        margin-bottom:.0001pt;
        font-size:12.0pt;
        font-family:"Times New Roman";}
a:link, span.MsoHyperlink
        {color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {color:purple;
        text-decoration:underline;}
span.EstiloCorreo17
        {mso-style-type:personal-reply;
        font-family:Arial;
        color:navy;}
@page Section1
        {size:595.3pt 841.9pt;
        margin:70.85pt 3.0cm 70.85pt 3.0cm;}
div.Section1
        {page:Section1;}
-->
</style>
<!--[if gte mso 9]><xml>
 <o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
 <o:shapelayout v:ext="edit">
  <o:idmap v:ext="edit" data="1" />
 </o:shapelayout></xml><![endif]-->
</head>

<body lang=ES link=blue vlink=purple>

<div class=Section1>

<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'>Hola<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'><o:p> </o:p></span></font></p>

<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'>Un numero con signo de 8 bits va de -128 a
127, como en el caso de los char, en cambio, el codigo ASCII va de 0 a 255 por
que no se necesita el signo para representar el carácter.<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'><o:p> </o:p></span></font></p>

<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'>Esta bien lo que decis: 10000000 = -128 y 01111111
= 127<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'><o:p> </o:p></span></font></p>

<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'>Fijate en esto: un unsigned int de 16 bits
va de 0 a 65535, un int de 16 bits va de -32.768 a 32.767, un unsigned int de 32
bits va de 0 a 4.294.967.295 y un int de 32 bits va de -2.147.483.648 a 2.147.483.647<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'><o:p> </o:p></span></font></p>

<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'>Si te tomas el trabajo de convertir estos
valores (con la calc de win para que sea rapido) a binario, vas a ver que el
bit mas signif es el del signo.<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'><o:p> </o:p></span></font></p>

<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'>Saludos.-<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'><o:p> </o:p></span></font></p>

<div>

<div class=MsoNormal align=center style='text-align:center'><font size=3
face="Times New Roman"><span style='font-size:12.0pt'>

<hr size=2 width="100%" align=center tabindex=-1>

</span></font></div>

<p class=MsoNormal><b><font size=2 face=Tahoma><span style='font-size:10.0pt;
font-family:Tahoma;font-weight:bold'>De:</span></font></b><font size=2
face=Tahoma><span style='font-size:10.0pt;font-family:Tahoma'>
cconclase-bounces@listas.conclase.net [mailto:cconclase-bounces@listas.conclase.net]
<b><span style='font-weight:bold'>En nombre de </span></b>David Reza<br>
<b><span style='font-weight:bold'>Enviado el:</span></b> Miércoles, 28 de
Noviembre de 2007 07:37 p.m.<br>
<b><span style='font-weight:bold'>Para:</span></b> Lista de correo sobre C y
C++<br>
<b><span style='font-weight:bold'>Asunto:</span></b> [C con Clase] Preguntas
sobre bits y números negativos</span></font><o:p></o:p></p>

</div>

<p class=MsoNormal><font size=3 face="Times New Roman"><span style='font-size:
12.0pt'><o:p> </o:p></span></font></p>

<p class=MsoNormal><font size=3 face="Times New Roman"><span style='font-size:
12.0pt'>Bueno, pues me prestaron un libro de C++ y estaba leyendo que los
números enteros que caben en un byte van del -128 al 127, debido a que 1 byte
contiene 8 bits. Esto ya lo sabía y hasta aquí va todo bien. <br>
<br>
Si hacemos el cálculo 2^8 el  resultado es de 256. Esto quiere decir que
en 8 bits cabe un número del rango 0 a 255, ya que el cero también se cuenta. <br>
<br>
Yo sabía que el signo se almacenaba en el bit de mayor magnitud, es decir, el
primero de izquierda a derecha, en este caso en el octavo bit (128, unas lineas
abajo). Yo sólo sabía que por ejemplo el número 128 se representaba en binario
de la siguiente forma: <br>
<br>
128 | 64 | 32 | 16 | 8 | 4 | 2 | 1<br>
  1     0     0   
0   0   0   0   0<br>
<br>
Es decir, 10000000, pero el libro dice que el octavo bit siempre será negativo,
por lo tanto si se utiliza (contiene un 1), todo el número será negativo, y si
no se utiliza (contiene un 0), significa que el número será positivo. <br>
<br>
Por lo tanto, como se está utilizando el octavo bit (contiene un 1), el número
es negativo y este número no es 128, si no, -128.<br>
<br>
Ya que:<br>
 <br>
  128  | 64 | 32 | 16 |  8  |  4  | 2 | 1<br>
 -128 + 0  + 0 +  0 + 0 + 0 + 0 + 0 = -128 <br>
<br>
Y para representar el -126, por ejemplo, sería:<br>
<br>
10000010<br>
<br>
Ya que:<br>
-128 + 0 + 0 + 0 + 0 + 0 + 2 + 0 = -126<br>
<br>
Y el número 127 se representaba: 01111111<br>
En donde el octavo bit no está activado y por lo tanto el número es negativo. <br>
<br>
Mi pregunta es qué tan cierto es esto? Y por qué se supone que el código ASCII
de 8 bits llega hasta el 255?<br>
<br>
Es por cuestión de que se declare 'con signo' o 'sin signo'?<o:p></o:p></span></font></p>

</div>

</body>

</html>