You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何查看Go语言中负数-4的二进制内存表示?

查看Go中负数的二进制内存表示

Go里用%b格式化输出有符号整数时,会显示符号位+绝对值的二进制,而非内存中实际存储的补码形式。要查看int8(-4)的真实内存二进制(补码),可以用以下两种方法:

方法1:类型转换为无符号整数

直接将int8类型变量转换为uint8,无符号整数的%b格式化会直接输出内存中的所有位:

package main

import (
    "fmt"
)

func main() {
    var a int8 = -4
    // 转换为uint8后打印补码
    fmt.Printf("%08b\n", uint8(a))
}

运行结果:

11111100

这就是-4作为int8在内存中的二进制补码表示。

方法2:使用unsafe包直接读取内存位

通过unsafe.Pointer获取变量的内存地址,再转换为*uint8类型读取内存中的原始位:

package main

import (
    "fmt"
    "unsafe"
)

func main() {
    var a int8 = -4
    // 直接读取内存中的无符号8位值
    fmt.Printf("%08b\n", *(*uint8)(unsafe.Pointer(&a)))
}

运行结果同样为:

11111100

补码计算说明

int8类型的-4补码推导过程:

  1. 4的二进制为00000100
  2. 按位取反得到11111011
  3. 加1后得到补码11111100,与输出结果一致。

内容的提问来源于stack exchange,提问作者user1787812

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.05 17:42:03