Thanks a lot, building on your answer, I came up with the below understanding:
Use 0b
to define a binary number and use #b
to print it, as in below:
package main
import (
"fmt"
)
func main() {
fmt.Println("Hello, playground")
x := 0b101101111
y := 0b111111
fmt.Printf("\nx + y = %#b that is %v + %v = %v ", x+y, x, y, x+y)
a := 0b1000000001
b := 0b111111111
fmt.Printf("\na - b = %#b that is %v - %v = %v ", a-b, a, b, a-b)
c := 0b1000000001
d := 0b111111111
fmt.Printf("\nc * d = %#b that is %v * %v = %v ", c*d, c, d, c*d)
h := 0b10110101101
r := 0b101
fmt.Printf("\nh / r = %#b that is %v / %v = %v ", h/r, h, r, h/r)
fmt.Printf("\nh %% r = %#b that is %v %% %v = %v ", h%r, h, r, h%r)
}
Note the double %
in the last line, we use %%
to escape %
Output is:
x + y = 0b110101110 that is 367 + 63 = 430
a - b = 0b10 that is 513 - 511 = 2
c * d = 0b111111111111111111 that is 513 * 511 = 262143
h / r = 0b100100010 that is 1453 / 5 = 290
h % r = 0b11 that is 1453 % 5 = 3
Same is applicable for Hexa and Octal numbers, use 0o
to define an octal number and use #o
to print it, and use 0x
to define a hexa number and use #x
to print it, below an example:
package main
import (
"fmt"
)
func main() {
fmt.Println("Hello, playground")
x := 1234
fmt.Printf("\nNumber %v =>\n In the binary system is: %#b \n In the hexgonal system is: %#x \n In the octal system is: %#o ", x, x, x, x)
O := 0o2322
fmt.Printf("\n%#o is %v ", O, O)
H := 0x4d2
fmt.Printf("\n%#x is %v ", H, H)
B := 0b10011010010
fmt.Printf("\n%#b is %v ", B, B)
}
And the output is:
Hello, playground
Number 1234 =>
In the binary system is: 0b10011010010
In the hexgonal system is: 0x4d2
In the octal system is: 02322
02322 is 1234
0x4d2 is 1234
0b10011010010 is 1234