--- license: mit tags: - pytorch - safetensors - threshold-logic - neuromorphic --- # threshold-signbit4 Extract sign bit (MSB) of 4-bit number. ## Function signbit4(a3, a2, a1, a0) = a3 In 2's complement representation: - Output 0: non-negative (0 to 7) - Output 1: negative (-8 to -1) ## Truth Table | a3 | a2 | a1 | a0 | unsigned | signed | signbit | |----|----|----|----|---------:|-------:|:-------:| | 0 | 0 | 0 | 0 | 0 | 0 | 0 | | 0 | 1 | 1 | 1 | 7 | +7 | 0 | | 1 | 0 | 0 | 0 | 8 | -8 | 1 | | 1 | 1 | 1 | 1 | 15 | -1 | 1 | ## Architecture Single neuron extracting MSB: - Weights: [1, 0, 0, 0] - Bias: -1 Fires when: a3 - 1 >= 0, i.e., a3 >= 1 ## Parameters | | | |---|---| | Inputs | 4 | | Outputs | 1 | | Neurons | 1 | | Layers | 1 | | Parameters | 5 | | Magnitude | 2 | ## Usage ```python from safetensors.torch import load_file import torch w = load_file('model.safetensors') def signbit4(a3, a2, a1, a0): inp = torch.tensor([float(a3), float(a2), float(a1), float(a0)]) return int((inp @ w['neuron.weight'].T + w['neuron.bias'] >= 0).item()) print(signbit4(0, 1, 1, 1)) # 0 (value = +7) print(signbit4(1, 0, 0, 0)) # 1 (value = -8) ``` ## License MIT