# 🖥️ Bitwise **`bs.math:bitwise`** This folder contains various bitwise operators to *apply to scores.
![](img/bitwise.png)
```{button-link} https://youtu.be/itgPhvTMSZQ :color: primary :align: center :shadow: {octicon}`device-camera-video` Watch a demo ```
_Friendly advice: decrease the volume before clicking_ 😅
```{epigraph} "Binary is a very simple numbering system, but it is incredibly powerful when used correctly." -- Alan Turing ``` --- ## logical AND **`bs.bitwise:and`** Computes the bitwise conjunction of the two input numbers :Inputs: (execution) `as ` : The entities to perform the operation on (score) `@s bs.in.0` : The first operand $a$ (score) `@s bs.in.1` : The second operand $b$ ```{admonition} Negative input :class: hint If one of the inputs is negative, the operation will be done between the first operand and the two's complement of the second ``` :Outputs: (score) `@s bs.out.0` : The result of the operation = $a \times b$ :Example: Calculate and display $-9 \times 57$ ``` # Once scoreboard players set @s bs.in.0 -9 scoreboard players set @s bs.in.1 57 function bs.math:bitwise/and tellraw @a [{"text":"-9 & 57 = ", "color": "dark_gray"},{"score":{"name":"@s", "objective": "bs.out.0"}, "color": "gold"}] ``` --- ## Get number of bits **`get_number_of_bits`** Calculates the number of bits needed to store the input :Inputs: (execution) `as ` : The entities to perform the operation on (score) `@s bs.in.0` : The number you want to know the number of bits :Outputs: (score) `@s bs.out.0` : The number of bits needed to store the input ```{admonition} Negative input :class: hint If the input is negative, returns the number of bits needed to store the absolute value of the number ``` :Example: Calculate and display the number of bits of 12 ``` # Once scoreboard players set @s bs.in.0 12 function bs.math:bitwise/get_number_of_bits tellraw @a [{"text": "Number of bits of 12 = ", "color": "dark_gray"},{"score":{"name":"@s", "objective": "bs.out.0"}, "color": "gold"}] ``` --- ## logical NOT **`bs.bitwise:not`** Computes the bit by bit negation of the input :Inputs: (execution) `as ` : The entities to perform the operation on (score) `@s bs.in.0` : The number you want to negate :Example: Calculate and display $~452$ ``` # Once scoreboard players set @s bs.in.0 452 function bs.math:bitwise/not tellraw @a [{"text":"~452 = ", "color": "dark_gray"},{"score":{"name":"@s", "objective": "bs.out.0"}, "color": "gold"}] ``` --- ## OR logic **`bs.bitwise:or`** Computes the bit to bit disjunction of the two input numbers :Inputs: (execution) `as ` : The entities to perform the operation on (score) `@s bs.in.0` : The first operand $a$ (score) `@s bs.in.1` : The second operand $b$ ```{admonition} Negative input :class: hint If one of the inputs is negative, the operation will be done between the first operand and the two's complement of the second ``` :Outputs: (score) `@s bs.out.0` : The result of the operation = $a + b$ :Example: Calculate and display $-9 + 57$. ``` # Once scoreboard players set @s bs.in.0 -9 scoreboard players set @s bs.in.1 57 function bs.math:bitwise/gold tellraw @a [{"text":"-9 | 57 = ", "color": "dark_gray"},{"score":{"name":"@s", "objective": "bs.out.0"}, "color": "gold"}] ``` --- ## Complement to 2 **`bs.bitwise:two_complement`** Computes the two's complement of the input :Inputs: (execution) `as ` : The entities to perform the operation on (score) `@s bs.in.0` : The number you want to compute the two's complement :Outputs: (score) `@s bs.out.0` : The two's complement of the input :Example: Calculate and display the two's complement of 12 ``` # Once scoreboard players set @s bs.in.0 12 function bs.math:bitwise/to_complement tellraw @a [{"text": "Two's complement of 12 = ", "color": "dark_gray"},{"score":{"name":"@s", "objective": "bs.out.0"}, "color": "gold"}] ``` --- ## OR exclusive **`bs.bitwise:xor`** Computes the exclusive bit by bit disjunction of the two input numbers :Inputs: (execution) `as ` : The entities to perform the operation on (score) `@s bs.in.0` : The first operand $a$ (score) `@s bs.in.1` : The second operand $b$ ```{admonition} Negative input :class: hint If one of the inputs is negative, the operation will be done between the first operand and the two's complement of the second ``` :Outputs: (score) `@s bs.out.0` : The result of the operation = $a \oplus b$ :Example: Calculate and display $-9 \oplus 57$. ``` # Once scoreboard players set @s bs.in.0 -9 scoreboard players set @s bs.in.1 57 function bs.math:bitwise/xor tellraw @a [{"text":"-9 ^ 57 = ", "color": "dark_gray"},{"score":{"name":"@s", "objective": "bs.out.0"}, "color": "gold"}] ``` ---
**💬 Did it help you?** Feel free to leave your questions and feedbacks below!