Diferencia entre revisiones de «int»

De ArduWiki
Saltar a: navegación, buscar
(Sintaxis)
 
(No se muestran 16 ediciones intermedias del mismo usuario)
Línea 2: Línea 2:
 
Los '''int''' (enteros) son el tipo de datos primario para el almacenamiento de números.
 
Los '''int''' (enteros) son el tipo de datos primario para el almacenamiento de números.
  
En el Arduino [[UNO]] (y otras placa basadas en el ATmega) un '''int'' almacena un valor de 2 byte (16 bit). Esto produce un rango de -32,768 a 32,767 (valor mínimo de -2^15 y un valor máximo de 2^15-1).  
+
En el Arduino [[UNO]] (y otras placa basadas en el ATmega) un '''int''' almacena un valor de 2 byte (16 bit). Esto produce un rango de -32,768 (-2^15) a 32,767 (2^15-1).  
  
En el Arduino [[DUE]], un '''int''' almacena un valor de 4 byte (32 bit). Esto produce un rango de -2,147,483,648 a 2,147,483,647 (valor mínimo de -2^31 y un valor máximo de 2^31- 1).
+
En el Arduino [[DUE]], un '''int''' almacena un valor de 4 byte (32 bit). Esto produce un rango de -2,147,483,648 (-2^31) a 2,147,483,647 (2^31-1).
  
 
Los '''int''' almacenan números negativos con una técnica llamada complemento matemático a 2. El bit más alto, a veces llamado bit de "signo" es la bandera que define el número como negativo. El resto de los bits se invierte y se les añade 1.
 
Los '''int''' almacenan números negativos con una técnica llamada complemento matemático a 2. El bit más alto, a veces llamado bit de "signo" es la bandera que define el número como negativo. El resto de los bits se invierte y se les añade 1.
Línea 11: Línea 11:
 
<pre>
 
<pre>
 
int variable [= valor];
 
int variable [= valor];
 +
int16_t variable [= valor];    //Solo UNO
 +
int32_t variable [= valor];    //Solo MEGA
 
</pre>
 
</pre>
  
Línea 16: Línea 18:
 
;variable: nombre de a variable a definir.
 
;variable: nombre de a variable a definir.
 
;valor: numero en el rango. Parámetro opcional.
 
;valor: numero en el rango. Parámetro opcional.
 +
 +
{| class="wikitable col2cen"
 +
|+Posibles formateadores
 +
!Base!!Prefijo!!Comentario!!Ejemplo
 +
|-
 +
|DEC||ninguno||Dígitos 0~9||123
 +
|-
 +
|HEX||0x||dígitos 0~9 + Caracteres A~F||0x7B
 +
|-
 +
|OCT||0||digitos 0~7||0173
 +
|-
 +
|BIN||B||0 o 1||B1111011
 +
|}
 +
 +
== Comentarios ==
 +
* En Arduino [[MEGA]] es un tipo de 2 bytes (16 bits) que almacena numeros entre -32,768 (-2^15) y 32,767 (2^15-1).
 +
* Los números negativos se almacenan con una técnica llamada '''matemática del complemento a 2'''. El bit más alto, a veces denominado bit de "signo", marca el número como un número negativo. El resto de los bits se invierten y se agrega 1.
  
 
== Advertencias ==
 
== Advertencias ==
Línea 28: Línea 47:
 
</syntaxhighlight>
 
</syntaxhighlight>
  
== Ejemplos ==
+
== Ejemplo 1 ==
 +
<syntaxhighlight lang="c++">
 +
int num;            //Variable declarada pero no inicializada.
 +
int x,y,z;          //Multiple variable declaradas pero no inicializadas.
 +
int x=0,y=1,z=2;    //Multiples variables declaradas e inicializadas.
 +
int n = 'A';
 +
int n = 65;
 +
int n = 0x41;      //0x = formato hexadecimal, 65
 +
int n = 0101;      //0 = formato octal, 65
 +
int n = B1000001;  //B = formato binario, 65
 +
</syntaxhighlight>
 +
 
 +
== Ejemplo 2 ==
 +
En el siguiente ejemplo usuario pretende usar 4K de [[SRAM]] cuando Arduino [[UNO]] solo tiene 2K.
 +
 
 +
<syntaxhighlight lang="c++">
 +
int var[2000];    //Error
 +
</syntaxhighlight>
 +
 
 +
== Ejemplo 3 ==
 +
Asignamos un caracter ASCII al int y operamos.
 +
 
 
<syntaxhighlight lang="c++">
 
<syntaxhighlight lang="c++">
int num;
+
void setup() {
int x,y,z;
+
  Serial.begin(115000);
int n = 1300;
+
  Serial.println("Letras mayusculas:");
 +
  for (int c='A'; c<='Z'; c++){
 +
      Serial.write(c);            //Imprime el carácter
 +
      Serial.print(", dec: ");
 +
      Serial.println(c);         //Imprime su valor ASCII decimal
 +
      delay(100);
 +
  }
 +
}
 +
void loop() {
 +
  //Nada
 +
}
 
</syntaxhighlight>
 
</syntaxhighlight>
  
 
== Vea también ==
 
== Vea también ==
* [[char]]
+
<categorytree mode=all>Tipo dato</categorytree>
* [[byte]]
 
* [[long]]
 
* [[float]]
 
* [[double]] - solo [[MEGA]]
 
* [[unsigned int]]
 
* [[word]]
 
* [[unsigned long]]
 
  
 
== Referencias ==
 
== Referencias ==
 
* [https://www.arduino.cc/reference/es/language/functions/time/int/ Guia de referencia de Arduino]
 
* [https://www.arduino.cc/reference/es/language/functions/time/int/ Guia de referencia de Arduino]
  
[[Category:Variables]]
+
[[Category:Tipo dato]]

Revisión actual del 16:33 24 ene 2020

Descripción

Los int (enteros) son el tipo de datos primario para el almacenamiento de números.

En el Arduino UNO (y otras placa basadas en el ATmega) un int almacena un valor de 2 byte (16 bit). Esto produce un rango de -32,768 (-2^15) a 32,767 (2^15-1).

En el Arduino DUE, un int almacena un valor de 4 byte (32 bit). Esto produce un rango de -2,147,483,648 (-2^31) a 2,147,483,647 (2^31-1).

Los int almacenan números negativos con una técnica llamada complemento matemático a 2. El bit más alto, a veces llamado bit de "signo" es la bandera que define el número como negativo. El resto de los bits se invierte y se les añade 1.

Sintaxis

int variable [= valor];
int16_t variable [= valor];    //Solo UNO
int32_t variable [= valor];    //Solo MEGA

Parámetros

variable
nombre de a variable a definir.
valor
numero en el rango. Parámetro opcional.
Posibles formateadores
Base Prefijo Comentario Ejemplo
DEC ninguno Dígitos 0~9 123
HEX 0x dígitos 0~9 + Caracteres A~F 0x7B
OCT 0 digitos 0~7 0173
BIN B 0 o 1 B1111011

Comentarios

  • En Arduino MEGA es un tipo de 2 bytes (16 bits) que almacena numeros entre -32,768 (-2^15) y 32,767 (2^15-1).
  • Los números negativos se almacenan con una técnica llamada matemática del complemento a 2. El bit más alto, a veces denominado bit de "signo", marca el número como un número negativo. El resto de los bits se invierten y se agrega 1.

Advertencias

  • El Arduino se encarga de tratar los número negativos por nosotros, por lo que las operaciones aritméticas trabajan de forma transparente de la manera esperada. Sin embargo, podemos encontrarnos con una complicación inesperada con el operador bitshift right (>>) (desplazamiento de bit a la derecha).
  • Si sumas 1 al valor maximo que de 32,767 pasa a -32,768.
  • Si restas 1 al valor minimo que de -32,768 pasa a 32,767.
int a = 35767;
a++;              //-32,768
int b = -31768;
b--;              //32,767

Ejemplo 1

int num;            //Variable declarada pero no inicializada.
int x,y,z;          //Multiple variable declaradas pero no inicializadas.
int x=0,y=1,z=2;    //Multiples variables declaradas e inicializadas.
int n = 'A';
int n = 65;
int n = 0x41;       //0x = formato hexadecimal, 65
int n = 0101;       //0 = formato octal, 65
int n = B1000001;   //B = formato binario, 65

Ejemplo 2

En el siguiente ejemplo usuario pretende usar 4K de SRAM cuando Arduino UNO solo tiene 2K.

int var[2000];    //Error

Ejemplo 3

Asignamos un caracter ASCII al int y operamos.

void setup() {
   Serial.begin(115000);
   Serial.println("Letras mayusculas:");
   for (int c='A'; c<='Z'; c++){
      Serial.write(c);            //Imprime el carácter
      Serial.print(", dec: ");
      Serial.println(c);          //Imprime su valor ASCII decimal
      delay(100);
   }
}
void loop() {
   //Nada
}

Vea también

  bool
  byte
  char
  int
  long
  void
  word


Referencias