众所周知, 内存地址空间是用16进制的数据表示, 如0x8049324, 那为什么需要用十六进制表示呢? 十六进制的意义何在?

编程中,我们常用的还是10进制.毕竟C/C++是高级语言。   

比如:int a = 100,b = 99;   

不过,由于数据在计算机中的表示,最终以二进制的形式存在,所以有时候使用二进制,可以更直观地解决 问题。但二进制数太长了。比如int 类型占用4个字节,32位。比如100,用int类型的二进制数表达将是:   

0000 0000 0000 0000 0110 0100   

面对这么长的数进行思考或操作,没有人会喜欢。因此,C,C++ 没有提供在代码直接写二进制数的方法。用16进制或8进制可以解决这个问题。因为,进制越大,数的表达长度也就越短。

不过,为什么偏偏是16或8进制,而不其它的,诸如9或20进制呢?2、8、16,分别是2的1次方,3次方,4次方。这一点使得三种进制之间可以非常直接地互相转换。8进制或16进制缩短了二进制数,但保持了二进制数的表达特点。

十六进制的意义:
1.用于计算机领域的一种重要的数制   

2.对计算机理论的描述,计算机硬件电路的设计都是很有益的。比如逻辑电路设计中,既要考虑功能的完备,还要考虑用尽可能少的硬件,十六进制就能起到一些理论分析的作用。比如四位二进制电路,最多就是十六种状态,也就是一种十六进制形式,只有这十六种状态都被用上了或者尽可能多的被用上,硬件资源才发挥了尽可能大的作用。   

3.十六进制更简短,因为换算的时候一位16进制数可以顶4位2进制数。

十六进制的表示:
C语言、Shell、Python语言及其他相近的语言使用字首“0x”,例如“0x5A3”。开头的“0”令解析器更易辨认数,而“x”则代表十六进制(就如“O”代表八进制)。在“0x”中的“x”可以大写或小写。

然后再说内存:

一个内存地址存着一个对应的值, 内存就相当于(addr,val)的大hash表,c语句的语义基本就是改变hash值。

如 int i = 3; 
假设 i的内存地址为 0x8049320 ,那么这句话的语义是0x8049320 = 3,经过i = 3后,i为(0x8049320,3)

int b = i;
假设 b的内存地址为 0x8049324 ,那么这句话的语义是0x8049324 = i对应的val = 3,此时b为(0x8049324,3)

参考:

十六进制
http://baike.baidu.com/view/230306.htm

理解C指针: 一个内存地址对应着一个值 
http://www.cppblog.com/hex108/archive/2011/06/18/124234.html

作者:BobLiu 
邮箱:lzd_ren@hotmail.com
出处:http://www.cnblogs.com/liuzhendong
本文版权归作者所有,欢迎转载,未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

内存地址空间与十六进制,为什么需要八进制和十六进制? 十六进制的意义何在相关推荐

  1. 内存地址空间为何用十六进制表示(pamp分析基础)

    内存地址空间与十六进制. 1应用场景:pamp 在gdb 或者pmap查看内容的时候经常出现 如下  0x8462960,0x8462960含义是啥 例如 wang@ubuntu:~/study/ ...

  2. python 十进制转二进制,十进制转八进制,十进制转十六进制 的方法

    python 转二进制使用:bin, 八进制使用oct 十六进制使用:hex 下面说下使用 a = 1234 print("十进制数为: ", a) print("转换为 ...

  3. python语言1010的八进制_python打印十六进制

    参考代码: print("{:>30,}".format(.9)) 7.给定一个整数数字 0x1010,请依次输出 Python 语言中十六进制.十进制.八进制和二进 制表示 ...

  4. 关于嵌入式系统内存地址空间的一些疑问(.text、.data、.bass、堆\栈空间)

    深入浅出了解(.text..data..bss.堆空间.栈空间)的含义 接下来所说的是嵌入式系统的内存地址空间的布局,简单的说就是我们写好的代码,在编译过程种中,把代码里不同的变量.函数相应的保存在每 ...

  5. python学习-综合练习三(斐波那契数列、阿姆斯特朗数、//和/、十进制转二进制bin、八进制oct、十六进制hex、进制转换源码、python中::和:的区别)

    文章目录 斐波那契数列 阿姆斯特朗数 十进制转二进制bin.八进制oct.十六进制hex 补充进制转换源码 python中::和:的区别 说明:本篇博文的知识点大部分来自 Python3 实例 斐波那 ...

  6. mpu 配置内存空间_PCIE的内存地址空间、I/O地址空间和配置地址空间

    pci设备与其它接口的设备(如i2c设备)最大的不同是存在内存地址空间和配置地址空间 首先区分一下IO空间和内存空间 cpu会访问的设备一般有内存和外设寄存器,如下图所示.x86架构采用独立编址将内存 ...

  7. 蓝桥杯基础练习合集一(C语言) 1.A+B问题2.数列排序3.十六进制转八进制4.十六进制转十进制5.十进制转十六进制

    目录 1.A+B问题 2.数列排序 3.十六进制转八进制 4.十六进制转十进制 5.十进制转十六进制 1.A+B问题 问题描述 输入A.B,输出A+B. 输入格式 输入的第一行包括两个整数,由空格分隔 ...

  8. 如何在printf中输出,特殊字符(如:%、\、““)或表示八进制012、十六进制0xc

    如何在printf中输出: 特殊字符(如:%.\."")或表示八进制012.十六进制0xc #include <stdio.h>int main(void) {floa ...

  9. PCIe的内存地址空间、I/O地址空间和配置地址空间

    PCIe的内存地址空间.I/O地址空间和配置地址空间 pci设备与其它接口的设备(如i2c设备)最大的不同是存在内存地址空间和配置地址空间,本文分析一下它们的用途. 首先区分一下IO空间和内存空间 c ...

最新文章

  1. DIV CSS display (block none inline)属性的用法教程
  2. Electron中提示:Refused to execute inline event handler because it violates
  3. 查找二叉树(信息学奥赛一本通-T1367)
  4. windows app html5,使用 HTML5 來偵測位置 (HTML)
  5. 大端字节序小端字节序(网络字节序主机字节序)
  6. Leetcode529. 扫雷游戏
  7. Intel张旭:通信和计算的融合将是5G的关键
  8. 谢谢有你【我与51CTO一“七”成长】
  9. Hbuilder Webview调试+逍遥安卓模拟器
  10. 打开Excle出现配置进度解决方法
  11. Redis 的过期策略
  12. 计算机开机太慢,为什么电脑开机很慢
  13. 读《从零开始学理财》
  14. 第二十三篇:稳定性之服务SLA
  15. Intel编译器安装WRF-CMAQ
  16. c语言我喜欢你,【幻 仿】UC启动时的我喜欢你
  17. javscript创建Emitter
  18. go语言宕机(panic)——程序终止运行
  19. 技术面试要点 —— 如何准备微软开发工程师面试?
  20. 2022年高教杯国赛数学建模思路分享

热门文章

  1. python去除字符串两边空格_python字符串去除两端空格
  2. 如何理解e.clientX和e.clientY e.screenX e.screenY
  3. 1.STM32F429简介
  4. 前端 DSL 实践指南
  5. coreldraw 长方体_CorelDRAW基础教程——形状工具
  6. Excel如何批量为空白单元格填充0值
  7. 粉丝重聚AltspaceVR 送别微软元宇宙“弃子”
  8. 公共rtsp_常见品牌网络摄像机的端口及RTSP地址
  9. 设计模式:装饰器模式
  10. 《看聊天记录都学不会Python到游戏实战?太菜了吧》(5)用前朝的剑斩今朝的官