1// run 2 3// Copyright 2021 The Go Authors. All rights reserved. 4// Use of this source code is governed by a BSD-style 5// license that can be found in the LICENSE file. 6 7package main 8 9import "fmt" 10 11func f(x uint64) uint64 { 12 s := "\x04" 13 c := s[0] 14 return x - x<<c<<4 15} 16 17func g(x uint32) uint32 { 18 s := "\x04" 19 c := s[0] 20 return x - x<<c<<4 21} 22 23func main() { 24 if want, got := uint64(0xffffffffffffff01), f(1); want != got { 25 panic(fmt.Sprintf("want %x got %x", want, got)) 26 } 27 if want, got := uint32(0xffffff01), g(1); want != got { 28 panic(fmt.Sprintf("want %x got %x", want, got)) 29 } 30} 31