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

2023-11-08

众所周知, 内存地址空间是用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

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

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

  • 具有多处理功能的 Python 代码无法在 Windows 上运行

    以下简单的绝对初学者代码在 Ubuntu 14 04 Python 2 7 6 和 Cygwin Python 2 7 8 上运行 100 但在 Windows 64 位 Python 2 7 8 上挂起 我使用另一个片段观察到了同样的情况
  • Python Nose 导入错误

    我似乎无法理解鼻子测试框架 https nose readthedocs org en latest 识别文件结构中测试脚本下方的模块 我已经设置了演示该问题的最简单的示例 下面我会解释一下 这是包文件结构 init py foo py t
  • DataFrame 在函数内部修改

    我面临一个我以前从未观察到的函数内数据帧修改的问题 有没有一种方法可以处理这个问题 以便初始数据帧不被修改 def test df df tt np nan return df dff pd DataFrame data 现在 当我打印时d
  • 如何检查目录是否有读/写权限

    我有一个如图所示的目录 d wx x x 2 bcheudev bcheudev 4096 Jun 18 06 16 test 这表明该目录没有读取权限 但是当我通过 shell 脚本检查相同内容时 它给出的结果是 dir test 具有读
  • 编辑 scikit-learn 决策树

    我想编辑 sklearn DecisionTree 例如改变条件或切割节点 叶子等 但似乎没有功能可以做到这一点 如果我可以导出到文件 编辑它以导入 如何编辑决策树 环境 Windows 10 python3 3 sklearn 0 17
  • Python:记录垃圾收集器

    我有一个 python 应用程序 有一些性能问题 我想将垃圾收集器的事件 特别是何时调用 添加到我的日志中 是否可以 thanks http docs python org library gc html gc set debug http
  • 在 scp 的简单函数包装中使用波形符 ~ 时出现问题

    我想放置一个简单的bash功能在我的 bashrc围绕着scp通过接受 源 参数和 目标 参数来命令 到目前为止已经尝试过 function send eval scp 1 user annoyingly long server name
  • 为什么在 Windows 中使用 GetConsoleScreenBufferInfoEx 时控制台窗口会缩小?

    我正在尝试使用 GetConsoleScreenBufferInfoEx 和 SetConsoleScreenBufferInfoEx 设置 Windows 命令行控制台的背景和前景色 我正在 Python 中使用 wintypes 进行此
  • 为 Networkx 图添加标题?

    我希望我的代码创建一个带有标题的图 使用下面的代码 可以创建绘图 但没有标题 有人可以告诉我我做错了什么吗 import pandas as pd import networkx as nx from networkx algorithms
  • 用Python中的嵌套for循环替换重复的if语句?

    在我编写的下面的代码中 n 4 所以有五个 if 语句 所以如果我想将 n 增加到 比如说 10 那么就会有很多 if 语句 因此我的问题是 如何用更优雅的东西替换所有 if 语句 n p 4 5 number of trials prob
  • 如何使用 Python 多处理避免在分叉进程中加载​​父模块

    当您创建一个Pool使用Python的进程multiprocessing 这些进程将分叉 父进程中的全局变量将显示在子进程中 如下面的问题所述 如何限制多处理进程的范围 https stackoverflow com questions 2
  • 如何从 Python 中指定运行程序的输入文件?

    我正在编写一个外部脚本 以通过笔记本电脑上的 Python mrjob 模块 而不是在 Amazon Elastic Compute Cloud 或任何大型集群上 运行 mapreduce 作业 我读自mrjob文档 http packag
  • 如何使用 PySpark 有效地将这么多 csv 文件(大约 130,000 个)合并到一个大型数据集中?

    我之前发布了这个问题并得到了一些使用 PySpark 的建议 如何有效地将这一大数据集合并到一个大数据框中 https stackoverflow com questions 60259271 how can i merge this la
  • Python正则表达式从字符串中获取浮点数

    我正在使用正则表达式来解析字符串中的浮点数 re findall a zA Z d d t 是我使用的代码 这段代码有问题 如果数字和任何字符之间没有空格 则不会解析该数字 例如 0 1 2 3 4 5 6 7 8 9 的预期输出为 0 1
  • 为什么“return self”返回 None ? [复制]

    这个问题在这里已经有答案了 我正在尝试获取链的顶部节点getTopParent 当我打印出来时self name 它确实打印出了父实例的名称 然而 当我回来时self 它返回 None 为什么是这样 class A def init sel
  • 如何向 SCons 构建添加预处理和后处理操作?

    我正在尝试在使用 SCons 构建项目时添加预处理和后处理操作 SConstruct 和 SConscript 文件位于项目的顶部 预处理动作 生成代码 通过调用不同的工具 gt 不知道在此预处理之后将生成的确切文件 可以创建用于决定生成哪
  • Jupyter Notebook:没有名为 pandas 的模块

    我搜索了其他问题 但没有找到任何有帮助的内容 大多数只是建议您使用 conda 或 pip 安装 pandas 在我的 jupyter 笔记本中 我试图导入 pandas import pandas as pd 但我收到以下错误 Modul
  • 为什么 bot.get_channel() 会产生 NoneType?

    我正在制作一个 Discord 机器人来处理公告命令 当使用该命令时 我希望机器人在特定通道中发送一条消息 并向用户发送一条消息以表明该命令已发送 但是 我无法将消息发送到频道 我尝试了这段代码 import discord import
  • 如何设置 matplotlib 表中列的背景颜色

    我在一个目录中有多个 txt 文件 例如 d memdump 0 txt 1 txt 10 txt 示例文本文件如下 Applications Memory Usage kB Uptime 7857410 Realtime 7857410
  • 在Python中从日期时间中减去秒

    我有一个 int 变量 它实际上是秒 让我们调用这个秒数X 我需要得到当前日期和时间 以日期时间格式 减去的结果X秒 Example If X是 65 当前日期是2014 06 03 15 45 00 那么我需要得到结果2014 06 03

随机推荐

  • docker容器详解

    Docker容器运行的本质是运行一个进程 该进程在其自己的隔离环境中运行 该环境由Linux内核的特性 如cgroups和namespaces 提供 Docker 容器存在的意义就是为了运行容器中的应用 对外提供服务 所以启动容器的目的就是
  • Topsis算法实践:比较LSTM算法与BP神经网络算法,以chickenpox_dataset为例

    目录 Topsis简介 模型分类与转化 极小转化为极大型 中间最优型转极大值 区间最优 a b 转极大型 计算得分并归一化 LSTM算法预测 数据加载处理 定义和训练LSTM网络 预测并返回误差 BP神经网络预测 数据处理 构建BP神经网络
  • AI制作ICON流程

    AI制作ICON流程 作者 欧日鑫 撰写时间 2019年4月18日 第一个 首先我给大家制作的第一款ICON就是地图ICON 开始我们用圆角矩形工具绘制一个形状 大小跟我效果图一样大就行添加颜色为84b388还有一个半径为10像素 然后我们
  • C# + Socket断线重连 整理

    Socket 连接异常之 由于目标机器积极拒绝 无法连接 System Net Sockets SocketException Connection refused 1 如果是采用TCP udp协议进行连接 检查windows防火墙是否开放
  • MyEclipse反编译Class文件的实现

    对于需要查看Java Class文件源码的筒子们来说 必须在项目中导入Java源码才能查看Class文件的具体实现 这不仅十分的麻烦 因为有时我们并不可以获得Class文件对应的Java源码 今天就给大家介绍一款反编译Class文件的工具
  • python返回值和while循环_Python -While循环递归

    怎么样 def fibonacci n a 0 b 1 if a gt n return a return a fibonacci n b a b 编辑 以下是它的工作原理 该函数通过向下一次调用自身的结果添加一个元素 a 来逐步构建数组
  • 土地基础知识

    土地产权 土地根据所有权分为国有土地和集体土地 国有土地 由国家享有所有权的土地 在我国 国有土地包括城市市区的土地 以及法律规定属于国家所有的农村和城市郊区的土地 集体土地 由农民集体享有所有权的土地 农村和城市郊区的土地 除由法律规定属
  • 【二维码图像矫正增强】基于MATLAB的二维码图像矫正增强处理仿真

    1 软件版本 matlab2013b 2 算法流程概述 通过形态学处理获得二维码部分的图像区域及边界 采用凸包算法来计算边界上的点集 然后根据点集来寻找二维码的四个顶点 然后透视变换矫正 二维码分割得到每个格子中的点 进行二维码图像归一化
  • python爬虫之post请求

    import requests import json import openpyxl url1 https a300010770 casmart com cn shop products headers content type appl
  • 解决macOS中安装应用后提示:无法打开“XXX”,因为无法验证开发者的问题

    如果在网上下载dmg安装包 并安装成功 打开应用时 提示 无法打开 XXX 因为无法验证开发者 解决方法如下 1 点击屏幕左上角的苹果图标 选择菜单 系统偏好设置 2 打开系统偏好设置界面 点击 安全性与隐私 gt 通用 3 在窗口底部会看
  • Android拍摄并进行图像识别(一)

    目录 一 简介 二 程序流程图 三 核心代码解析 1 主界面跳转到拍照界面 2 实现无触摸自动拍照 1 拍照功能 2 预览功能 3 保存照片并返回主界面 四 总结 一 简介 最近在学习实现Android的拍照AI识别功能 主要通过调用手机系
  • TCP/IP协议(分片与分段)的介绍

    TCP IP协议 分片与分段 在传输层TCP分段 在网络层分片 如果只有分片 数据处理时 在传输层tcp分片 数据加个报文头部 然后在网络层ip分片 如果数据遗失 需要传输层重传整个报文 太占资源 所以直接在传输层一步到位 采用分段的方法
  • 千年服务器武功修改,千年私服如何添加武功

    做了GM之后会加装备删装备了 可是武功怎么弄一直摸不着头脑 在几个高手指点下 本人也完成了一次武功的添加 在此献上心德一篇 在1000yServer tgs1000 Init Magic文件里 将自己相印的1层和2层武工名字改了就可以了 雷
  • torch.mul()函数的使用

    参考链接 mul value Tensor 参考链接 torch mul 使用说明 对两个张量进行逐元素乘法 Microsoft Windows 版本 10 0 18363 1256 c 2019 Microsoft Corporation
  • HCIP——网络类型实验

    1 实验要求 1 R2为ISP 其中只能配置IP地址 2 R1 R2之间为HDLC封装 3 R2 R3之间为ppp封装 pap认证 R2为主认证方 4 R2 R4之间为ppp封装 chap认证 R2为主认证方 5 R1 R2 R3构建MGR
  • 一个机器人位于一个 m x n 网格的左上角 。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角。问总共有多少条不同的路径?【LeetCodeHot100】

    力扣热题100之62 先贴代码 class Solution public int uniquePaths int m int n 创建棋盘 int board new int m n 将第0列的格子路径设为1 for int i 0 i
  • webpack5基本教程-2

    自动清空上次打包的内容 配置如下 处理其他资源 处理js资源 原因 Webpack 对 js 处理是有限的 只能编译 js 中 ES 模块化语法 不能编译其他语法 导致 js 不能在 IE 等浏览器运行 所以我们希望做一些兼容性处理 其次开
  • JetBrain软件不同版本下载

    通过URL进行老版本下载 针对所有JetBrain产品 包括Pycharm IDEA Clion等 这里以Pycharm为例 windows系统下载 https download jetbrains com cn python pychar
  • QT QComboBox+QTreeView 实现二级或多级菜单并带滚轮

    效果 废话不多说 上代码 ComboBox h pragma once include
  • 内存地址空间与十六进制,为什么需要八进制和十六进制? 十六进制的意义何在?...

    众所周知 内存地址空间是用16进制的数据表示 如0x8049324 那为什么需要用十六进制表示呢 十六进制的意义何在 编程中 我们常用的还是10进制 毕竟C C 是高级语言 比如 int a 100 b 99 不过 由于数据在计算机中的表示