Skip to main content
CRC Calc

CRC-16 / IBM-3740

Width16-bitRefInNoRefOutNo

Need custom parameters? Open in full calculator

Standard test string

Result

0x29B1

Similar CRC Algorithms

Result is calculated from the current input. Check is the published verification value for the standard input 123456789. Click another algorithm to view its detail page.

CRC Lookup Table

0x00000x10210x20420x30630x40840x50A50x60C60x70E70x81080x91290xA14A0xB16B0xC18C0xD1AD0xE1CE0xF1EF
0x12310x02100x32730x22520x52B50x42940x72F70x62D60x93390x83180xB37B0xA35A0xD3BD0xC39C0xF3FF0xE3DE
0x24620x34430x04200x14010x64E60x74C70x44A40x54850xA56A0xB54B0x85280x95090xE5EE0xF5CF0xC5AC0xD58D
0x36530x26720x16110x06300x76D70x66F60x56950x46B40xB75B0xA77A0x97190x87380xF7DF0xE7FE0xD79D0xC7BC
0x48C40x58E50x68860x78A70x08400x18610x28020x38230xC9CC0xD9ED0xE98E0xF9AF0x89480x99690xA90A0xB92B
0x5AF50x4AD40x7AB70x6A960x1A710x0A500x3A330x2A120xDBFD0xCBDC0xFBBF0xEB9E0x9B790x8B580xBB3B0xAB1A
0x6CA60x7C870x4CE40x5CC50x2C220x3C030x0C600x1C410xEDAE0xFD8F0xCDEC0xDDCD0xAD2A0xBD0B0x8D680x9D49
0x7E970x6EB60x5ED50x4EF40x3E130x2E320x1E510x0E700xFF9F0xEFBE0xDFDD0xCFFC0xBF1B0xAF3A0x9F590x8F78
0x91880x81A90xB1CA0xA1EB0xD10C0xC12D0xF14E0xE16F0x10800x00A10x30C20x20E30x50040x40250x70460x6067
0x83B90x93980xA3FB0xB3DA0xC33D0xD31C0xE37F0xF35E0x02B10x12900x22F30x32D20x42350x52140x62770x7256
0xB5EA0xA5CB0x95A80x85890xF56E0xE54F0xD52C0xC50D0x34E20x24C30x14A00x04810x74660x64470x54240x4405
0xA7DB0xB7FA0x87990x97B80xE75F0xF77E0xC71D0xD73C0x26D30x36F20x06910x16B00x66570x76760x46150x5634
0xD94C0xC96D0xF90E0xE92F0x99C80x89E90xB98A0xA9AB0x58440x48650x78060x68270x18C00x08E10x38820x28A3
0xCB7D0xDB5C0xEB3F0xFB1E0x8BF90x9BD80xABBB0xBB9A0x4A750x5A540x6A370x7A160x0AF10x1AD00x2AB30x3A92
0xFD2E0xED0F0xDD6C0xCD4D0xBDAA0xAD8B0x9DE80x8DC90x7C260x6C070x5C640x4C450x3CA20x2C830x1CE00x0CC1
0xEF1F0xFF3E0xCF5D0xDF7C0xAF9B0xBFBA0x8FD90x9FF80x6E170x7E360x4E550x5E740x2E930x3EB20x0ED10x1EF0

CRC Source Code

/* 
 * Model: CRC-16 / IBM-3740 (16-bit)
 * Poly: 0x1021, Init: 0xFFFF, XorOut: 0x0000
 * CRC Table C Source Code & Lookup Table Generator
 */
#include <stdint.h>
#include <stddef.h>

const uint16_t crc_table[256] = {
  0x0000, 0x1021, 0x2042, 0x3063, 0x4084, 0x50A5, 0x60C6, 0x70E7, 
  0x8108, 0x9129, 0xA14A, 0xB16B, 0xC18C, 0xD1AD, 0xE1CE, 0xF1EF, 
  0x1231, 0x0210, 0x3273, 0x2252, 0x52B5, 0x4294, 0x72F7, 0x62D6, 
  0x9339, 0x8318, 0xB37B, 0xA35A, 0xD3BD, 0xC39C, 0xF3FF, 0xE3DE, 
  0x2462, 0x3443, 0x0420, 0x1401, 0x64E6, 0x74C7, 0x44A4, 0x5485, 
  0xA56A, 0xB54B, 0x8528, 0x9509, 0xE5EE, 0xF5CF, 0xC5AC, 0xD58D, 
  0x3653, 0x2672, 0x1611, 0x0630, 0x76D7, 0x66F6, 0x5695, 0x46B4, 
  0xB75B, 0xA77A, 0x9719, 0x8738, 0xF7DF, 0xE7FE, 0xD79D, 0xC7BC, 
  0x48C4, 0x58E5, 0x6886, 0x78A7, 0x0840, 0x1861, 0x2802, 0x3823, 
  0xC9CC, 0xD9ED, 0xE98E, 0xF9AF, 0x8948, 0x9969, 0xA90A, 0xB92B, 
  0x5AF5, 0x4AD4, 0x7AB7, 0x6A96, 0x1A71, 0x0A50, 0x3A33, 0x2A12, 
  0xDBFD, 0xCBDC, 0xFBBF, 0xEB9E, 0x9B79, 0x8B58, 0xBB3B, 0xAB1A, 
  0x6CA6, 0x7C87, 0x4CE4, 0x5CC5, 0x2C22, 0x3C03, 0x0C60, 0x1C41, 
  0xEDAE, 0xFD8F, 0xCDEC, 0xDDCD, 0xAD2A, 0xBD0B, 0x8D68, 0x9D49, 
  0x7E97, 0x6EB6, 0x5ED5, 0x4EF4, 0x3E13, 0x2E32, 0x1E51, 0x0E70, 
  0xFF9F, 0xEFBE, 0xDFDD, 0xCFFC, 0xBF1B, 0xAF3A, 0x9F59, 0x8F78, 
  0x9188, 0x81A9, 0xB1CA, 0xA1EB, 0xD10C, 0xC12D, 0xF14E, 0xE16F, 
  0x1080, 0x00A1, 0x30C2, 0x20E3, 0x5004, 0x4025, 0x7046, 0x6067, 
  0x83B9, 0x9398, 0xA3FB, 0xB3DA, 0xC33D, 0xD31C, 0xE37F, 0xF35E, 
  0x02B1, 0x1290, 0x22F3, 0x32D2, 0x4235, 0x5214, 0x6277, 0x7256, 
  0xB5EA, 0xA5CB, 0x95A8, 0x8589, 0xF56E, 0xE54F, 0xD52C, 0xC50D, 
  0x34E2, 0x24C3, 0x14A0, 0x0481, 0x7466, 0x6447, 0x5424, 0x4405, 
  0xA7DB, 0xB7FA, 0x8799, 0x97B8, 0xE75F, 0xF77E, 0xC71D, 0xD73C, 
  0x26D3, 0x36F2, 0x0691, 0x16B0, 0x6657, 0x7676, 0x4615, 0x5634, 
  0xD94C, 0xC96D, 0xF90E, 0xE92F, 0x99C8, 0x89E9, 0xB98A, 0xA9AB, 
  0x5844, 0x4865, 0x7806, 0x6827, 0x18C0, 0x08E1, 0x3882, 0x28A3, 
  0xCB7D, 0xDB5C, 0xEB3F, 0xFB1E, 0x8BF9, 0x9BD8, 0xABBB, 0xBB9A, 
  0x4A75, 0x5A54, 0x6A37, 0x7A16, 0x0AF1, 0x1AD0, 0x2AB3, 0x3A92, 
  0xFD2E, 0xED0F, 0xDD6C, 0xCD4D, 0xBDAA, 0xAD8B, 0x9DE8, 0x8DC9, 
  0x7C26, 0x6C07, 0x5C64, 0x4C45, 0x3CA2, 0x2C83, 0x1CE0, 0x0CC1, 
  0xEF1F, 0xFF3E, 0xCF5D, 0xDF7C, 0xAF9B, 0xBFBA, 0x8FD9, 0x9FF8, 
  0x6E17, 0x7E36, 0x4E55, 0x5E74, 0x2E93, 0x3EB2, 0x0ED1, 0x1EF0
};

uint16_t calculate_crc(const uint8_t *data, size_t length) {
    uint16_t crc = 0xFFFF;
    for (size_t i = 0; i < length; i++) {
        #if 0
        uint8_t idx = (uint8_t)(crc ^ data[i]);
        crc = (crc >> 8) ^ crc_table[idx];
        #else
        uint8_t idx = (uint8_t)((crc >> 8) ^ data[i]);
        crc = (crc << 8) ^ crc_table[idx];
        #endif
    }
    return crc ^ 0x0000;
}

About CRC-16/IBM-3740

CRC-16/IBM-3740 is the established name for the model historically called CRC-16/CCITT-FALSE.

CRC-16/IBM-3740 is a 16-bit CRC model defined by polynomial 0x1021, an initial register value of 0xFFFF, and final XOR 0x0000. It uses normal, non-reflected input and output processing.

Documented application context for this model includes Telecommunications, Embedded systems, Protocol validation. The calculator above applies this exact parameter set to the current input; the published Check value below is instead the fixed verification result for ASCII 123456789.

Standard test vector

CRC implementations are commonly verified with the ASCII input 123456789.

Input format
ASCII
Input
123456789
Expected CRC
0x29B1
Residue
0x0000

Model characteristics

A model is identified by its complete parameter set, not its polynomial alone.

Bit order
Normal
Register start
0xFFFF
Final XOR
0x0000
Published check
0x29B1

Implementation checks for CRC-16/IBM-3740

  • Use a 16-bit register and polynomial 0x1021.
  • Initialize the register to 0xFFFF and use XorOut 0x0000 exactly as listed; changing either value defines a different model.
  • Verify the implementation with ASCII “123456789”; the expected result is 0x29B1.

Continue with the main calculator, browse the algorithm catalog, compare models in the Algorithm Reference section, or generate a lookup table.

Complete CRC-16/IBM-3740 parameters

CRC parameter guide
ParameterValueMeaningReference
Width16 bitsCRC register and result widthRead guide
Poly0x1021Generator polynomial without the leading termRead guide
Init0xFFFFInitial CRC register valueRead guide
RefInNoReflect each input byte before processingRead guide
RefOutNoReflect the register before XOR OutRead guide
XorOut0x0000Final value XORed with the CRC registerRead guide
Check0x29B1CRC of ASCII “123456789”Read guide
Residue0x0000Expected residue after appending a valid CRCRead guide
AliasesCRC-16/CCITT-FALSECCITT-FALSECRC-CCITT

Where CRC-16/IBM-3740 is used

  • 01Telecommunications
  • 02Embedded systems
  • 03Protocol validation

CRC-16/IBM-3740 FAQ

What is the check value for CRC-16/IBM-3740?

For the standard ASCII test input 123456789, the check value of CRC-16/IBM-3740 is 0x29B1.

What polynomial does CRC-16/IBM-3740 use?

CRC-16/IBM-3740 uses the 16-bit polynomial 0x1021.

Does CRC-16/IBM-3740 use reflected input and output?

For CRC-16/IBM-3740, RefIn is No and RefOut is No.

What is CRC-16/IBM-3740 commonly confused with?

CRC-16/XMODEM uses the same polynomial (0x1021), which is the usual source of mix-ups — matching the polynomial alone does not reproduce CRC-16/IBM-3740. The two models differ in initial value, so a port from one to the other needs those fields checked explicitly, not just the poly.