首页 > 编程语言 >程序员不得不了解的计算机进制转换

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

时间:2023-05-16 14:14:19浏览次数:50  
标签:十六进制 进制 ... 二进制 16 程序员 八进制 计算机

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

最近在备考软考的软件设计师考试,学到了关于计算机的数据表示,由于我是半路出家学的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进制,我们一般是采用按权展开法,并且具有公式

image

image

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

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

对于八进制,十六进制都是使用该方法转换为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

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

标签:十六进制,进制,...,二进制,16,程序员,八进制,计算机
From: https://www.cnblogs.com/wzbjluoyu/p/17405454.html

相关文章

  • 《程序员修炼之道:从小工到专家》11
    死程序不说谎和断言式编程 没有完美的程序,再老练的程序员都可能出现“不可能”问题,在这种时候我们往往会选择关闭运行的程序以避免出现更大的损失但问题必须要解决,程序早晚要重新启动,那么对可能出现问题的地方进行提示编写就是非常有必要的——虽然这不能帮我们解决问题但是却......
  • C++黑马程序员——P207-209. deque容器 插入和删除,数据存取,排序操作
    P207.deque容器——插入和删除P208.deque容器——数据存取P209.deque容器——排序操作P207.deque插入和删除 ————————————————————————————————————————————————————————1#include<iostream>2#......
  • 计算机专业就业方向汇总
            前面笔者写过关于学习的方向博文(IT软件人员的技术学习内容(写给技术迷茫中的你)-项目管理系列文章),也对项目组人员进行过总结(软件项目角色指南),但是,到了笔者这个年纪,对于计算机专业方向的人来说,选好就业方向的工作岗位内容很重要。所以,笔者就写了此博文,对当前......
  • 程序员修炼之道阅读笔记01
    程序员修炼之道—从小工到专家 是我这学期阅读的第二本书,这本书的前言中告诉了我们这本书的大体内容,它将告诉我们我们怎样以一种我们等够遵循的方式去编程。在刚开始读这本书的时候,我的收获就很大,我们要做注重实效的程序员,那么什么是注重实效的程序员呢?1、这需要我们......
  • 程序员修炼之道阅读笔记03
    第四章:注重实效的偏执这章讲的是程序员如何把“你不可能写出完美的软件”这一压抑的事情转变为有利条件。按合约设计(DBC):指的是做某事的期望和陈述。 前条件,开始之前的必要条件。后条件,执行后悔导致的状态。类不变项,类确保在调用者看来,该条件总是为真。死程序不说......
  • 程序员修炼之道阅读笔记02
    注重实效的途径1、重复的危害:DRY原则,系统中的每一项知识都必须具有单一、无歧义、权威的表示。不能重复自己。那么重复是怎么发生的?强加的重复:我们似乎觉得,我们必须这样才行。无意的重复:我们在不知不觉间重复信息。无耐性的重复:当我们发现现在需要的一部分代......
  • 合作谱新篇 携手同发展 | 热烈欢迎中国计算机学会(CCF)苏州一行走访璞华!
    5月7日下午,以“合作谱新篇携手同发展“为主题的“2023年CCF(中国计算机协会)苏州走进璞华”活动在璞华苏州总部成功举办。CCF副秘书长束庆山、CCF苏州分会主席龚声蓉、CCF苏州分部副主席胡伏原、璞华公司董事长管祥红等20多位专家、企业家出席活动。活动伊始,璞华集团董事长管祥......
  • 程序员修炼之道 从小工到专家 阅读笔记04
    易于测试的代码:1、软件IC是人们在讨论可复用性和基于组件的开发时喜欢使用的比喻。意思是集成电路芯片可以很容易的进行组合,我们希望软件开发也能达到这个效果。芯片的设计有完善的测试,同样的软件开发也可以做同样的事情。2、针对合约进行测试及为测试而设计,即TDD测试驱动开......
  • 计算机管理里面没有本地用户和组?
    问题:计算机管理里面没有本地用户和组?Win+R-->mmc-->文件-->添加/删除管理单元-->添加本地用户和组(失败)解决:Windowsserver2003Win+R-->dsa.msc(启动ActiveDirectory用户和计算机)-->Uers节点中便是本地用户......
  • 23-5-13--条件控制结构-程序员买包子
     这是一条检测真正程序员的段子:假如你被家人要求下班顺路买十只包子,如果看到卖西瓜的,买一只。那么你会在什么情况下只买一只包子回家?本题要求你考虑这个段子的通用版:假如你被要求下班顺路买 N 只包子,如果看到卖 X 的,买 M 只。那么如果你最后买了 K 只包子回家,说明你看......