Skip to content

OP_NUMNOTEQUAL ​

INFO

Opcode number: 158
Byte representation: 0x9e
Short description: Pop the top two stack items and push 0 if both are numerically equal, else push 1.

OP_NUMNOTEQUAL compares the top two items on the stack as integers. If they are not numerically equal, it pushes 1 (true) onto the stack. If they are equal, it pushes an empty array (false). Both items are removed from the stack after the comparison.

Operation ​

  1. Remove the top two items from the stack.
  2. Compare them as integers:
    • If they are not equal, push 1 (true) onto the stack.
    • If they are equal, push an empty array (false) onto the stack.
  3. Both original items are removed.

Notes ​

  • Both items must be valid integers. Bitcoin Script interprets byte arrays up to 4 bytes as signed integers.
  • An empty array ([]) is treated as 0 when compared.
  • If there are fewer than two items on the stack when OP_NUMNOTEQUAL is executed, the script will fail.

Examples ​

Example 1: Two unequal integers ​

shell
# ASM script
OP_2 OP_3 OP_NUMNOTEQUAL

# Raw script
52539e

# Stack (before OP_NUMNOTEQUAL)
3  # top
2

# Stack (after OP_NUMNOTEQUAL)
1  # true, as 2 != 3

Example 2: Two equal integers ​

shell
# ASM script
OP_2 OP_2 OP_NUMNOTEQUAL

# Raw script
52529e

# Stack (before OP_NUMNOTEQUAL)
2  # top
2

# Stack (after OP_NUMNOTEQUAL)
[]  # false, as 2 == 2

Example 3: Comparing zero with an empty array ​

shell
# ASM script
OP_0 OP_PUSHBYTES_1 00 OP_NUMNOTEQUAL

# Raw script
0001009e

# Stack (before OP_NUMNOTEQUAL)
00  # top (single zero byte)
[]  # empty array

# Stack (after OP_NUMNOTEQUAL)
[]  # false, as 0 == [0x00]