Skip to content

服务器托管,北京服务器托管,服务器租用-价格及机房咨询

Menu
  • 首页
  • 关于我们
  • 新闻资讯
  • 数据中心
  • 服务器托管
  • 服务器租用
  • 机房租用
  • 支持中心
  • 解决方案
  • 联系我们
Menu

程序员不得不了解的计算机进制转换

Posted on 2023年9月18日 by hackdl

程序员不得不了解的计算机进制转换

最近在备考软考的软件设计师考试,学到了关于计算机的数据表示,由于我是半路出家学的Java,导致计算机基础知识很差,在这里记录一下学习感受

为啥要用二进制

  • 早期计算机的存储介质是晶体管,晶体管根据电压不同,只能表示2种状态,也就是0和1
  • 计算机使用二进制运算更加方便

更详细的请参考计算机为啥采用二进制

为啥要用十六进制

首先,假如你的计算机是32位的机器,数字1在计算机中的表示就是0000000000000000001,
假如你是要操作内存,用这么长一串二进制数,是不是感觉有点头大,1位16进制数可以表示4位二进制数,
那数字1用16进制来表示就是1H,是不是感觉清爽多了。

进制转换的原理

阅读本章之前需要明确的点

  • 进制数的位数从右到左,分别表示从高到低,我们称右边的数为高位,左边的数为低位
  • 一位八进制数最多表示三位二进制数,一位十六进制数最多表示4位二进制数

十进制转二进制、八进制、十六进制

对于10进制转其他进制,一般是使用除法取余数的方式进行计算

例如将数字151 转换为二进制

被除数  ÷  除数  =  商  ... 余数
151 ÷ 2 = 75 ... 1 
75 ÷ 2 = 37 ... 1 
37 ÷ 2 = 18 ... 1 
18 ÷ 2 = 9 ... 0 
9 ÷ 2 = 4 ... 1
4 ÷ 2 = 2 ... 0 
2 ÷ 2 = 1 ... 0 
1 ÷ 2 = 0 ... 1
将每一步得到的余数从下往上依次排列,得到 10010111,即151的二进制表示。

转为八进制

151 ÷ 8 = 18 ... 7
18 ÷ 8 = 2 ... 2
2 ÷ 8 = 0 ... 2
151的8进制表示为227

转为十六进制

151 ÷ 16 = 9 ... 7 
9 ÷ 16 = 0 ... 9
因此,151的16进制数为97

二进制、八进制、十六进制转十进制

对于其他进制转换为10进制,我们一般是采用按权展开法,并且具有公式

  • r 为进制单位 假如数字为二进制 则r = 2
  • n 为数字的位数, 例如有一个二进制数 1001,则它的n为4
  • $a_{n}$ 表示取数字的第几位 假如有一个二进制数1001, 那么$a_{n}$ 就为1

例如: 十进制数11的二进制数为1011

使用按权展开法,首先该二进制数有4位,所以n为4,可以得出以下式子

对于八进制,十六进制都是使用该方法转换为10进制

二进制、八进制、十六进制之间互相转换

将二进制数转换为八进制数,需要先将二进制数转换为10进制,然后将10进制数转换为八进制

这种转换方式有点麻烦,如果不是很大的数字,可以看下一章,快速转换

快速转换进制的方法

快速转换可以通过查表的方式快速转换

十进制 二进制 八进制 十六进制
0 0 0 0
1 1 1 1
2 10 2 2
3 11 3 3
4 100 4 4
5 101 5 5
6 110 6 6
7 111 7 7
8 1000 – 8
9 1001 – 9
10 1010 – A
11 1011 – B
12 1100 – C
13 1101 – D
14 1110 – E
15 1111 – F

在这个表格中,每个进制的数字都有对应的二进制、八进制、十进制、十六进制数。例如,十进制数2对应二进制数10,八进制数2和十六进制数2都是用数字2来表示,十六进制数F对应二进制数1111。使用这个表格可以快速地进行不同进制之间的转换。

这种方式对于二进制、八进制、十六进制之间的转换非常有效

例如 将二进制数10101转换为十六进制

  • 首先一个十六进制数最多表示4位进制数
  • 从低位取4位二进制数 0101 在16进制下没有发现该数字,将高位的0去掉 得到 101,查到16进制数5
  • 继续从低位再取4位,发现只有1了,那它的16进制数就是1
  • 从低位到高位组合16进制数 得到 15

进制加减法

还记得小学我们学的十进制加减法不,即满十进一法.
其实对于二进制,八进制,16进制数可分别对应满二进一,满八进一,满16进一.

请参考 16进制加减法

二进制计算符号位溢出问题

学习该章首先要明确的点

  • 计算机中的位,表示的是CPU的寻址空间大小
  • 计算机中二进制(原码)数字的首位为符号位,0表示正数,1表示负数
  • 这里也可以理解为数字表示的最大二进制位数

首先假如我们在一个字长为8位的计算机中进行运算 5 + 7

将它们转换为2进制运算 00000101 + 00000111 = 00001100
00001100 = 12

那假如是 -5 + -7 呢

转换为二进制运算就是,10000101 + 10000111 = 100001100

100001100 计算出来的二进制数变成了9位,8位下的计算计算机咋能表示9位呢,那把首位的1去掉就变成了00001100 = 12

额,为啥 两个负数相加咋变成正数了,计算机是不是傻了。我们下节继续

服务器托管,北京服务器托管,服务器租用 http://www.fwqtg.net

Related posts:

  1. idc服务器托管收费价格一般是多少
  2. 服务器托管:安全稳定的选择
  3. 深入了解服务器托管经营范围
  4. 大带宽服务器的带宽是多少
  5. 重庆电信服务器托管云空间价格表

服务器托管,北京服务器托管,服务器租用,机房机柜带宽租用

服务器托管

咨询:董先生

电话13051898268 QQ/微信93663045!

上一篇: 2.LAMP架构 LAMP架构
下一篇: mysql索引调优

最新更新

  • 一文带你从了解到搭建 HTTP/3 Web 服务
  • Autocad C#二次开发煤矿数据处理
  • vue3探索——5分钟快速上手大菠萝pinia
  • vCenter Server7出现no healthy upstream的排查方法
  • 单文件组件形式

随机推荐

  • 四川大学服务器托管
  • 服务器托管网络安全
  • 北京 idc 机房 找工作
  • 邮箱服务器托管费用解析
  • 【云原生】私有镜像的解决方案-Harbor管理实战

客服咨询

  • 董先生
  • 微信/QQ:93663045
  • 电话:13051898268
  • 邮箱:dongli@hhisp.com
  • 地址:北京市石景山区重聚园甲18号2层

友情链接

  • 服务器托管
  • 机房租用托管
  • 服务器租用托管
©2023 服务器托管,北京服务器托管,服务器租用-价格及机房咨询 京ICP备13047091号-8