# Bit Test

The `BT` x86 assembly language instruction stands for Bit Test and was added to the x86 instruction set with the 80386 processor. `BT` copies a bit from a given register to the carry flag.[1] Example: copy the third least significant bit from EAX to the carry flag

`BT EAX, 2`

`BTS` (Bit Test and Set) operates the same, but also sets the bit in the register,[2] while `BTR` (Bit Test and Reset) resets it,[3] and `BTC` (Bit Test and Complement) flips it.[4]

Logical Explanation BT

```  BT SRC, POSITION
```
```  SRC
Represent as bits array
```
```  POSITION
Represent as numeric position
From Right to Left
Start at 0
```
```  CF
Carry Flag
```
```  Result
CF = SRC[POSITION]
```

Logical Explanation BTC

```  BTC SRC, POSITION
```
```  SRC
Represent as bits array for CF Result
Represent as hex for SRC Result
```
```  POSITION
Represent as numeric position
From Right to Left
Start at 0
```
```  CF
Carry Flag
```
```  Result
CF = SRC[POSITION]
XOR SRC, POW(2,POSITION)
```

## References

1. "BT – Bit Test". Retrieved 2011-08-21.
2. "BTS – Bit Test and Set". Retrieved 2011-08-21.
3. "BTR – Bit Test and Reset". Retrieved 2011-08-21.
4. "BTC – Bit Test and Complement". Retrieved 2012-11-04.