# 16 bits

En arquitectura de computadoras, 16 bits es un adjetivo usado para describir enteros, direcciones de memoria u otras unidades de datos que comprenden hasta 16 bits (2 octetos) de ancho, o para referirse a una arquitectura de CPU y ALU basadas en registros, bus de direcciones o bus de datos de ese ancho.
Los 16 bits son más conocidos por ser parte de computadoras domésticas y videoconsolas en la década de 1990, ocupando la cuarta generación de videoconsolas.

## Arquitectura de 16 bits

Los procesadores de 16 bits más conocidos son el PDP-11, Intel 8086, Motorola 68000, Intel 80286 y el WDC 65C816.
El MIT Whirlwind (hacia 1951) fue muy posiblemente el primer equipo de 16 bits. Otros pioneros de los 16 bits (entre 1965 a 1970) fueron el IBM 1130, el HP 2100, el Data General Nova, y el DEC PDP-11. Los primeros (entre 1973–75) microprocesadores multi-chip de 16 bits fueron el National Semiconductor IMP-16 y el Western Digital MCP-1600. Los pioneros (entre 1975–76) microprocesadores de 16 bits en un solo chip fueron el National Semiconductor PACE, el HP BPC, y el Texas Instruments TMS9900. Otros procesadores de 16 bits notables son el Intel 8086, el Intel 80286, el WDC 65C816, y el Zilog Z8000. El Intel 8088 es compatible en código con el Intel 8086, y puede considerarse de 16 bits en cuanto a registros e instrucciones aritméticas, mientras que su bus de datos es de 8 bits.
Un entero de 16 bits puede almacenar 2$^{16}$ (o 65536) valores diferentes. El rango de números enteros sin signo que se pueden almacenar en 16 bits va de 0 a 65535; usando complemento a dos, el rango de valores posibles va de –32768 a 32767. Por lo tanto, un procesador con direccionamiento de memoria (o Bus de direcciones) de 16 bits puede acceder directamente a 64 KiB de memoria direccionable por bytes
Los microprocesadores de 16 bits han sido sustituidos completamente en la industria del ordenador personal, pero permanece en uso en una amplia variedad de aplicaciones embebidas, por ejemplo los procesadores XAP presentes en numerosos ASICs.

### El Motorola 68000 de 16/32 bits y el Intel 386SX

El Motorola 68000 (MC68000) es un caso especial ya que es de 16 bits en lo que respecta a su bus de datos; pero en lo que respecta a sus registros generales y a en la mayoría de las operaciones matemáticas utiliza 32 bits. El Microcódigo del 68000 tiene tres ALUs internas de 16 bits. En el encapsulado DIP original, solo los 24 bits del contador de programa (PC) estaban disponibles, con un máximo de 16 Megabytes de memoria RAM direccionable. Por tanto su software es de 32 bits y compatible hacia adelante con otros procesadores de 32 bits de la misma familia.
Sin embargo, debido a que era el procesador de la Sega Mega Drive y a la saturación de publicidad haciendo hincapié en sus 16 bits, es considerado erróneamente como de 16 bits. De hecho es la causa de que el periodo entre 1988-1995 (aprox.) sea conocida por los jugadores como "la era de los 16 bits".
El Motorola 68008 fue una versión del 68000 con un bus de datos de 8 bits y 1 Megabyte de memoria direccionable para la versión DIP de 48 pines y 4 Megabytes para la versión PLCC de 52 pines. Varios Apple Macintosh como el Macintosh LC/Macintosh LC II usaban procesadores Motorola 68020 y Motorola 68030 con un bus de datos de 16 bits para ahorrar costes.
Un análisis similar se aplica a los Intel 386SX, diseñados para reemplazar al Intel 80286 sin tener que cambiar el diseño de la placa madre. Es un procesador de 32 bits con una Unidad aritmética lógica de 32 bits y rutas de datos internos de 32 bits con un bus externo de 16 bits y 24 bits de direccionamiento del procesador que reemplazó.

## Formato de archivo de 16 bits

Un formato de fichero de 16 bits es un Formato de archivo informático binario en el que cada elemento está definido por 16 bits (o 2 Bytes). Ejemplos de este tipo de archivos son el UTF-16 y el Metaarchivo de Windows.

## Modelos de memoria de 16 bits

Similar al modelo de datos de 64 bits, el de 16 bits de la arquitectura Intel permite para los diferentes modelos de memoria, formas de acceder a una ubicación de memoria en particular. La razón para el uso de un determinado modelo de memoria es el tamaño de las instrucciones de ensamblador o del almacenamiento necesario para los punteros. Los compiladores de 16 bits en general tienen las siguientes características en cuanto a tamaño de tipos de datos:
Modelo de datos de 16 bits :
| Modelo de Datos | corto | entero | largo | punteros |
| IP16L32 (cercano) | 16 | 16 | 32 | 16 |
| I16LP32 (lejano) | 16 | 16 | 32 | 32 |
* “Tiny” —El código y los datos están en el mismo segmento (sobre todo, los registros CS, DS, ES, SS que apuntan al mismo segmento), se utilizan siempre punteros cercanos(near). Código, datos y pila no pueden exceder en total los 64 Kilobytes.
* “Small” —El código y los datos están en diferentes segmentos, y se usan siempre punteros near. Hay 64K de espacio para código y 64K para pila y datos.
* “Medium” —Los punteros de código son lejanos (far), permitiendo acceder a 1 Megabyte. Los punteros de datos siguen siendo near.
* “Compact” —Los punteros de datos son far y los de código near.
* “Large”/“Huge” —Tanto los punteros de código como los de datos son far.

## Aplicaciones de 16 bits

En el contexto del compatible IBM PC y los equipos Wintel, una aplicación de 16 bits es cualquier software escrito para MS-DOS, OS/2 1.x o las primeras versiones de Microsoft Windows que originalmente se ejecutaban en los microprocesadores de 16 bits Intel 8086 e Intel 80286. Estas aplicaciones utilizan un segmento o selector de dirección de 20 bits o 24 bits para ampliar la gama de posiciones de memoria direccionable más allá de lo que era posible utilizando direcciones única de 16 bits. Por tanto, los programas que contienen más de 2$^{16}$ bytes (64 kilobytes) de instrucciones y datos, requieren instrucciones especiales para cambiar entre sus segmentos de 64 kilobytes, incrementando la complejidad de la programación de aplicaciones de 16 bits.

## Lista de CPUs de 16 bits

* Data General
** Nova
** Eclipse
* Digital Equipment Corporation
** PDP-11 (para el LSI-11, ver Western Digital)
* EnSilica
** eSi-1600
* Freescale
** Freescale 68HC12
** Freescale 68HC16
* General Instrument
** CP1600
* Hewlett-Packard
** HP 21xx/2000/1000/98xx/BPC
** HP 3000
* Honeywell
** Honeywell Level 6/DPS 6
* IBM
** 1130/1800
** System/7
** Series/1
** System/36
* Infineon
** Familia XE166
** Familia C166
** Familia C167
** XC2000
* Intel
** Intel 8086/Intel 8088
** Intel 80186/Intel 80188
** Intel 80286
** Intel MCS-96
* Lockheed
** MAC-16
* National Semiconductor
** IMP-16
** PACE/INS8900
* NEC
** V20/V30
* Texas Instruments
** Texas Instruments TMS9900
** MSP430
* Western Design Center
** WDC 65C816
* Western Digital
** MCP-1600 (utilizado en el DEC LSI-11)
* Xerox
** Alto
* Zilog
** Zilog Z8000