# Numbers that start with zero

yourbasic.org/golang

What’s up with the counting in this example?

```
const (
Century = 100
Decade = 010
Year = 001
)
// The world's oldest person, Emma Morano, lived for a century,
// two decades and two years.
fmt.Println("She was", Century+2*Decade+2*Year, "years old.")
```

She was 118 years old.

## Answer

`010`

is a number in **base 8**, therefore it means 8, not 10.

Integer literals in Go are specified in octal, decimal or hexadecimal.
The number 16 can be written as `020`

, `16`

or `0x10`

.

Literal | Base | Note |
---|---|---|

`020` |
8 | Starts with `0` |

`16` |
10 | Never starts with `0` |

`0x10` |
16 | Starts with `0x` |

This bitwise operators cheat sheet covers all bitwise operators and functions in Go.

### Zero knowledge (trivia)

There are many ways to write zero in base 8 in Go, including
`0`

, `00`

and `000`

.
If you prefer hexadecimal notation, you also have a smörgåsbord of options: such as
`0x0`

, `0x00`

and `0x000`

(as well as `0X0`

, `0X00`

and `0X000`

).
However, there is no decimal zero integer literal in Go.

In fact, Go doesn’t have any negative decimal literals either:
`-1`

is the unary negation operator
followed by the decimal literal `1`

.