**Advanced Boolean Functions**

This is a collection of advanced Boolean functions and how you can do this on a scientific calculator that has base conversions and Boolean functions (and, or, not). One thing to keep in mind is that Boolean functions on a scientific calculator assume that you are working with a set bit size.

Order of Operations: Parenthesis, NOT, AND, OR

For the examples below, I am going to work with only 8 bit size binary integers, and display the last 8 bits (rightmost 8 digits in Binary numbers). For all examples, let (in base 2):

A = 1100 1010

B = 1110 0011

Like the Boolean functions and, or, and not, these functions work on each bit (0s and 1s) of the binary form of the number.

**Integer Types on the HP Prime**

On the HP Prime, the integer type is used for Boolean function calculations. Symbolize integer types by preceding it by a hashtag # and designated a letter at the end of the integer: b for binary, o for octal, d for decimal, and h for hexadecimal.

Example: #11010b represents the binary number 11010.

You can specify the bit size, from 1 to 64, by attaching a colon and bit size in between the integer and it's indicator.

Example: #11010:8b represents the 11010 in an 8-bit format. You can specify the default size in the Home Settings.

**NAND (Not And)**

The function NAND is also known as the Shaffer function.

nand(A, B) = not(A and B)

nand(1100 1010, 1110 0011) = not(1100 1010 and 1110 0011) = 0011 1101

Truth Table - NAND

0 nand 0 = 1

0 nand 1 = 1

1 nand 0 = 1

1 nand 1 = 0

**HP Prime Program: NAND**

EXPORT NAND(a,b)

BEGIN

// not and Boolean Function

RETURN NOT (a AND b);

END;

Syntax: NAND(a,b)

**NOR (Not Or)**

The function NOR is also known as the Peirce function.

nor(A, B) = not(A or B)

nor(1100 1010, 1110 0011) = not(1100 1010 or 1110 0011) = 0001 0100

Truth Table - NOR

0 nor 0 = 1

0 nor 1 = 0

1 nor 0 = 0

1 nor 1 = 0

**HP Prime Program: NOR**

EXPORT NOR(a,b)

BEGIN

// not or Boolean Function

RETURN NOT (a OR b);

END;

Syntax: NOR(a,b)

**XOR (Exclusive Or)**

Note: some calculators will have the XOR function

xor(A, B) = (A or B) and (not A or not B)

xor(1100 1010, 1110 0011)

= (1100 1010 or 1110 0011) and (not 1100 1010 or not 1110 0011)

= 0010 1001

Truth Table - XOR

0 xor 0 = 0

0 xor 1 = 1

1 xor 0 = 1

1 xor 1 = 0

**Equivalence (←→), XNOR**

A ←→ B = (not A and not B) or (A and B)

1100 1010 ←→ 1110 0011

= 1100 1010 xnor 1110 0011

= (not 1100 1010 and not 1110 0011) or (1100 1010 and 1110 0011)

= 1101 0110

Truth Table - ←→, xnor

0 xnor 0 = 1

0 xnor 1 = 0

1 xnor 0 = 0

1 xnor 1 = 1

**HP Prime Program XNOR**

EXPORT XNOR(a,b)

BEGIN

// equivalence, XNOR

RETURN (NOT a AND NOT b) or (a AND b);

END;

Syntax: XNOR(a, b)

**Implication (→)**

A → B = (not A) or B

1100 1010 → 1110 0011

= (not 1100 1010) or 1110 0011

= 1111 0111

Truth Table - Implication, →

0 → 0 = 1

0 → 1 = 1

1 → 0 = 0

1 → 1 = 1

**HP Prime Program: IMPL**

**EXPORT IMPL(a,b)**

BEGIN

// implication

RETURN (NOT a) or b;

END;

John W. Harris and Horst Stocker.

__Handbook of Mathematics and Computation Science__Springer: New York, NY. 2006. ISBN 978-0-387-94746-4

Eddie

All original content copyright, © 2011-2020. Edward Shore. Unauthorized use and/or unauthorized distribution for commercial purposes without express and written permission from the author is strictly prohibited. This blog entry may be distributed for noncommercial purposes, provided that full credit is given to the author.