package main

import "fmt"

func main() {
	var u uint8 = 255
	fmt.Println(u, u+1, u*u) // 255 0 1
	var i int8 = 127
	fmt.Println(i, i+1, i*i) // 127 -128 1

	var x uint8 = 1<<1 | 1<<5
	var y uint8 = 1<<1 | 1<<2
	fmt.Printf("%08b\n", x)    // 00100010 множество 1,5
	fmt.Printf("%08b\n", y)    // 00000110 множество 1,2
	fmt.Printf("%08b\n", x&y)  // 00000010 пересечение 1
	fmt.Printf("%08b\n", x|y)  // 00100110 объеденение 1,2,5
	fmt.Printf("%08b\n", x^y)  // 00100100 симметричная разность 2,5
	fmt.Printf("%08b\n", x&^y) // 00100000 расность 5

	for index := uint(0); index < 8; index++ {
		if x&(1<<index) != 0 { // проверка принадлежности множеству
			fmt.Println(index) // 1 \n 5
		}
	}

	fmt.Printf("%08b\n", x<<1) // 01000100 множество 2,6
	fmt.Printf("%08b\n", x>>1) // 00010001 множество 0,4

	medals := []string{"золото", "серебро", "бронза"}
	for index := len(medals) - 1; index >= 0; index-- {
		fmt.Println(medals[index]) // "бронза", "серебро", "золото"
	}
}