0xCA AND 0x5C (8-bit)
- Operation
- A AND B
- A
- 0xCA
- B
- 0x5C
- Width
- 8-bit
- Read the result as
- Unsigned
- Result
- 72
- Hex
- 0x48
- Binary
- 0100 1000
- Bits set to 1
- 2
Checked against: Python 3.8: 0xCA & 0x5C = 72 = 0x48, bin(72).count('1') = 2
Bitwise AND, OR, XOR, NOT, NAND, NOR, shifts and rotates on 8- to 64-bit integers, shown in decimal, hex and binary with a bit-by-bit grid.
A AND B is 0x48 (0100 1000), which is 72 whether read as signed or unsigned; 2 of the 8 bits are 1.
Negative inputs are stored as 2⁸ = 256 minus their magnitude (two's complement).
Result bit is 1 only where both bits are 1.
Bitwise operators work on each bit position separately: AND gives 1 only where both bits are 1, OR where either is, XOR where they differ, and NOT flips every bit. Shifts move the whole pattern left or right, filling with zeros, or with copies of the sign bit for an arithmetic right shift, and rotates carry the bits that fall off one end back in at the other. Every result is cut to the chosen width of 8, 16, 32 or 64 bits.
Programmers use it to build and test bit masks, flags, permissions and hardware registers. The default, 0xCA AND 0x5C in 8 bits, keeps only the bits the two share: 1100 1010 AND 0101 1100 = 0100 1000, which is 0x48 or 72. XOR of the same pair gives 0x96, which reads as 150 unsigned or −106 signed.
Negative inputs are stored in two's complement, so −1 in 16 bits is 0xFFFF.
Checked against: Python 3.8: 0xCA & 0x5C = 72 = 0x48, bin(72).count('1') = 2
Checked against: Python 3.8: 0xCA ^ 0x5C = 150; int.from_bytes(bytes([150]), 'big', signed=True) = -106
Checked against: Python 3.8: ~0 & (2**64 - 1) = 18446744073709551615
Checked against: Python 3.8: -128 >> 2 = -32 (Python's >> on ints is arithmetic); -32 & 0xFF = 0xE0
XOR (exclusive or) gives 1 where the two bits differ and 0 where they match, so 0xCA XOR 0x5C = 0x96. Two properties make it useful: x XOR x = 0, and applying the same key twice restores the original. That is why XOR toggles flags, computes parity and checksums, and appears in simple ciphers. C, Java, JavaScript and Python all write it as ^.
A logical right shift fills the vacated top bits with 0, while an arithmetic shift copies the sign bit so negative numbers stay negative. In 8 bits, 0x80 shifted right by 2 logically is 0x20 (32), but −128 shifted right by 2 arithmetically is 0xE0 (−32), which is −128 ÷ 4. Java and JavaScript write >>> for logical and >> for arithmetic; in C, >> on a negative signed value is implementation-defined.
A mask is a number whose 1 bits pick the positions you care about. AND with the mask keeps those bits and clears the rest, OR sets them, XOR toggles them, and AND with NOT mask clears them. x AND 0x0F keeps the low 4 bits, and −1 AND 0x0F0F in 16 bits gives 0x0F0F = 3855, because −1 is all ones. To test bit n, check whether x AND (1 << n) is non-zero.
Shifting left by n multiplies an unsigned value by 2^n as long as no 1 bits are pushed past the top: 0x0F << 4 is 0xF0 = 240. Bits that move beyond the width are lost, so in 8 bits 0xFF << 4 is also 0xF0, not 4,080. In C, shifting by the full width or more is undefined behavior, and x86 masks the shift count to 5 bits for 32-bit operands and 6 bits for 64-bit ones.
Popcount (population count, or Hamming weight) is the number of 1 bits in a value: 0x48 = 0100 1000 has 2, and NOT 0 in 64 bits has 64. x86 has a single POPCNT instruction for it, C++20 exposes it as std::popcount and Java as Integer.bitCount. It counts set flags and gives the Hamming distance between two values as popcount(a XOR b).
Accuracy depends on your inputs and the method's assumptions. Decimal arithmetic uses 50 significant digits, but estimates, numerical methods and source data can be less precise; the displayed rounding does not remove those limits. It is checked against 8 worked examples whose answers come from independent sources; for example, “0xCA AND 0x5C (8-bit)” is checked against Python 3.8: 0xCA & 0x5C = 72 = 0x48, bin(72).count('1') = 2.
ISO/IEC 9899:2024 (C23) §6.5.7 bitwise shift operators and §6.5.10–6.5.12 bitwise AND, XOR, OR (draft N3096); Intel 64 and IA-32 Architectures Software Developer's Manual, Vol. 2 — SAL/SAR/SHL/SHR and ROL/ROR.
8 worked examples with independently sourced answers ship with this calculator. They run in the test suite; you can run them here too.
Convert numbers between binary, decimal, hex, octal and any base 2–36, including fractions, repeating digits and two's-complement bits for negatives.
Find the network address, broadcast, usable host range and host count of any IPv4 or IPv6 CIDR block, with netmask, wildcard and equal subnets.
Generate MD5, SHA-1, SHA-256, SHA-512 and CRC-32 hashes of any text, check them against a published checksum, and see the avalanche effect.
Operation counts and running times for O(1), O(log n), O(n), O(n log n), O(n²), O(n³), O(2ⁿ) and O(n!) at your input size, on a log-scale chart.
Allow optional Google Analytics to measure page visits? Calculators work either way. Privacy and choices
Optional analytics: off.