gdb调试或者打印地址时候为啥只有48位?

例如:0x7fffd2f48c10
根本原因:当前的x86_64处理器硬件限制所致。因为目前面世的x86_64处理器的地址线只有48条,硬件要求传入的地址的48到63位必须与47位相同
因为这个相同的原因也就是说剩下的16位要那么是 0x0000 要么是0xffff 也就是说
情况1(剩下的16位都是0):
BIN二进制64位是 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000
                             0000 0000 0000 0000 0111 1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 1111
   16进制   是  0x0000000000000000 到 
                       0x00007fffffffffff
   去掉16位  也就是 0x000000000000
                                0x7fffffffffff
情况2(剩下的16位都是1):
BIN二进制64位是 1111 1111 1111 1111 1000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000
                1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 1111
   16进制   是  0xffff800000000000 到 
                       0xffffffffffffffff
   去掉16位  也就是 0x800000000000
                               0xffffffffffff
                    
通常用情况1        

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值