summaryrefslogtreecommitdiff
path: root/docs/type_system/bit.md
blob: b4741567d6e2f609b0b83751a720cee3d7af833d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
# Bit

---

A sequence of bits that can fit into a register

```text
Bit_size `alias Enum[.bit_any; .bit8; .bit16; .bit32; .bit64; .bit80; .bit128]

Bit_representation `alias Enum[
    .numeric; .int; .int_unsiged; .int_signed; .float
    .utf8; .utf16; .utf32
    .bool
]

Bit[Bit_size; Bit_representation]
```

# Casting

# Alias

```text
Number `alias Bit[.bit_any; .numeric]

Int `alias Bit[.bit_any; .int]

Int_unsiged `alias Bit[.bit_any; .int_unsiged]

U8 `alias Bit[.bit8; .int_unsiged]
U16 `alias Bit[.bit16; .int_unsiged]
U32 `alias Bit[.bit32; .int_unsiged]
U64 `alias Bit[.bit64; .int_unsiged]

Int_signed `alias Bit[.bit_any; .int_signed]

I8 `alias Bit[.bit8; .int_signed]
I16 `alias Bit[.bit16; .int_signed]
I32 `alias Bit[.bit32; .int_signed]
I64 `alias Bit[.bit64; .int_signed]

Float `alias Bit[.bit_any; .float]

F32 `alias Bit[.bit32; .float]
F64 `alias Bit[.bit64; .float]

Char `alias Bit[.bit32; .utf8]

Bool `alias Bit[.bit8; .bool]
```

# Operators

## Arithmetic

### Add `+`

### Sub `-`

### Mul `*`

### Div `/`

### Mod `%`

### ``exp`

### ``ln`

## Boolean

### ``true`

### ``false`

### Not `!`

### Equal `=`

### Not Equal `!=`

### And `&`

### Or `|`

### Greater `>`

### Greater Equal `>=`

### Less `<`

### Less Equal `<=`

## Bitwise

### ``bit_not`

### ``bit_and`

### ``bit_or`

### ``bit_xor`

### ``bit_ls`

### ``bit_rs`