负数在内存中的表示

use*_*812 0 go

在下面的代码中:

package main

import (
    "fmt"
)

func main() {

    var a, b int8 = -4, 4
    fmt.Printf("%b\n", a)

    fmt.Printf("%08b\n", a)

    fmt.Printf("%08b\n", b)
    //fmt.Println("a and b have same sign?", (a^b) >= 0)
}
Run Code Online (Sandbox Code Playgroud)

给出带负号的输出:

-100
-0000100
00000100
Run Code Online (Sandbox Code Playgroud)

如何查看负数的二进制表示-4

Ren*_*nat 5

要查看二进制补码二进制表示,可以这样做:

var aUnsigned = uint8(a)
fmt.Printf("%08b\n", aUnsigned)
Run Code Online (Sandbox Code Playgroud)

输出:

11111100
Run Code Online (Sandbox Code Playgroud)