Diferencia entre revisiones de «unsigned long»

De ArduWiki
Saltar a: navegación, buscar
(Referencias)
 
(No se muestran 16 ediciones intermedias del mismo usuario)
Línea 1: Línea 1:
 
== Descripción ==
 
== Descripción ==
Las variables long sin signo son variables de tamaño extendido para almacenamiento de números y almacenan números de 32 bits (4 bytes). A diferencia de los long estándar no almacenan números negativos, teniendo un rango desde 0 a 4,294,967,295 (2^32 - 1). Alternativamente puede verse declarado como tipo '''uint32_t''', sin embargo funciona exactamente igual.
+
Es como el tipo de dato [[long]] para almacenar 4 byte (32 bits), pero sin signo es decir no almacena números negativos, teniendo un rango desde 0 a 4,294,967,295 (2^32-1). Alternativamente puede verse declarado como tipo '''uint32_t''', sin embargo funciona exactamente igual.
 +
 
 +
{{Nota|Tenga cuidado al hacer operaciones con numeros enteros ya que si no lo especificas explisitamente, Arduino asume que quieres trabajar con [[int]]. Ver Ejemplo 1.}}
  
 
== Sintaxis ==
 
== Sintaxis ==
 
<pre>
 
<pre>
unsigned long variable = valor;
+
unsigned long variable [= valor];
 +
uit32_t variable [= valor];
 
variable = valorUL;
 
variable = valorUL;
 
</pre>
 
</pre>
  
== Parametros ==
+
== Parámetros ==
;variable: el nombre de nuestra variable
+
;variable: El nombre de variable a definir.
;valor: el valor que asignamos a la variable en el rango desde 0 a 4,294,967,295.
+
;valor: Valor que asignamos a la variable en el rango entre 0~4,294,967,295. Parámetro opcional.
;valorUL: mismo rango que anterior pero debe ir forzado con '''UL'''
+
;valorUL: Forzar con subfijo '''UL'''. Puedes omitir la palabra '''unsigned long''' antes del nombre de la variable.
 +
;uit32_t: sinonimo de '''unsigned long'''.
 +
 
 +
{| class="wikitable col2cen"
 +
|+Posibles formateadores
 +
!Base!!Subfijo!!Ejemplo
 +
|-
 +
|[[unsigned int]]||U||n = 123U
 +
|-
 +
|[[long]]||L||n = 123L
 +
|-
 +
|[[unsigned long]]||UL||n = 123UL
 +
|-
 +
|[[float]]||F||n =12.3F
 +
|}
 +
 
 +
 
 +
{| 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||B1110011
 +
|}
  
 
== Advertencias ==
 
== Advertencias ==
* Si sumas 1 al valor maximo que de 4,294,967,295 pasa a 08.
+
* Si sumas 1 al valor maximo que de 4,294,967,295 pasa a 0.
 
* Si restas 1 al valor minimo que de 0 pasa a 4,294,967,295.
 
* Si restas 1 al valor minimo que de 0 pasa a 4,294,967,295.
  
== Ejemplo ==
+
== Ejemplo 1 ==
Un ejemplo de parpadeo sin usar [[delay()]].
+
Los números 60 y 24 son interpretados como [[int]] por Arduino que soporta maximo de 32,767 de modo que 86,400 no entra.
<pre>
+
 
 +
<syntaxhighlight lang="c++">
 +
unsigned long segundos = 60 * 60 * 24;  //Error
 +
unsigned long segundos = 60UL * 60 * 24;  //Ok
 +
</syntaxhighlight>
 +
 
 +
== Ejemplo 2 ==
 +
Hacer parpadear el LED a bordo sin usar [[delay()]].
 +
 
 +
<syntaxhighlight lang="c++">
 
unsigned long hora=0;
 
unsigned long hora=0;
 
void setup(){
 
void setup(){
Línea 30: Línea 70:
 
   }
 
   }
 
}
 
}
</pre>
+
</syntaxhighlight>
  
 
== Vea también ==
 
== Vea también ==
* [[byte]]
+
<categorytree mode=all>Tipo dato</categorytree>
* [[int]]
 
* [[long]]
 
* [[float]]
 
* [[unsigned int]]
 
  
 
== Referencias ==
 
== Referencias ==
 
* [https://www.arduino.cc/reference/es/language/functions/time/millis/ Guia de referencia de Arduino]
 
* [https://www.arduino.cc/reference/es/language/functions/time/millis/ Guia de referencia de Arduino]
  
[[Category:Variables]]
+
[[Category:Tipo dato]]

Revisión actual del 18:40 6 may 2019

Descripción

Es como el tipo de dato long para almacenar 4 byte (32 bits), pero sin signo es decir no almacena números negativos, teniendo un rango desde 0 a 4,294,967,295 (2^32-1). Alternativamente puede verse declarado como tipo uint32_t, sin embargo funciona exactamente igual.

Nota: Tenga cuidado al hacer operaciones con numeros enteros ya que si no lo especificas explisitamente, Arduino asume que quieres trabajar con int. Ver Ejemplo 1.


Sintaxis

unsigned long variable [= valor];
uit32_t variable [= valor];
variable = valorUL;

Parámetros

variable
El nombre de variable a definir.
valor
Valor que asignamos a la variable en el rango entre 0~4,294,967,295. Parámetro opcional.
valorUL
Forzar con subfijo UL. Puedes omitir la palabra unsigned long antes del nombre de la variable.
uit32_t
sinonimo de unsigned long.
Posibles formateadores
Base Subfijo Ejemplo
unsigned int U n = 123U
long L n = 123L
unsigned long UL n = 123UL
float F n =12.3F


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 B1110011

Advertencias

  • Si sumas 1 al valor maximo que de 4,294,967,295 pasa a 0.
  • Si restas 1 al valor minimo que de 0 pasa a 4,294,967,295.

Ejemplo 1

Los números 60 y 24 son interpretados como int por Arduino que soporta maximo de 32,767 de modo que 86,400 no entra.

unsigned long segundos = 60 * 60 * 24;  //Error
unsigned long segundos = 60UL * 60 * 24;   //Ok

Ejemplo 2

Hacer parpadear el LED a bordo sin usar delay().

unsigned long hora=0;
void setup(){
   pinMode(LED_BUITIN, OUTPUT);
}
void loop(){
   if (millis() - hora > 500){
      hora = millis();
      digitalWrite(LED_BUITIN, !digitalRead(LED_BUITIN));
   }
}

Vea también

  bool
  byte
  char
  int
  long
  void
  word


Referencias