思前想后:

例:

接下来我们细致理解进制之间的转换,首先我们理解下二进制,十进制,十六进制。

从我们熟悉的10进制说起,也就是逢10进1,即从0……9,当9再加1就进位。同理:

2进制即逢2进1,即从0到1,当1再加1就进位。

16进制即逢16进1,即从0……F (F就是15),当F再加1就进位。

一:2进制转换为16进制:

把二进制数从低位到高位每4位组成一组,每一组直接用16进制数来表示即可,例如:

0011 0101 1011 11113      5    B    F

例如:

位置:  1             1             1                1

2∧3 *1       2∧2*1        2∧1*1         2∧0*1

权:    8            4              2               1

这里很好拼凑,1,2,4,8权相对应的位置只要是1,咱们加起来就可以了。

头四位(0011)末尾俩1:(1+2=3)

接着四位(0101)从右到左第1,第三位为1:(1+4=5)

接着(1011):(1+2+8=B)

最后(1111):(1+2+4+8=F)

记住1,2,4,8的顺序就好了。

所以 0011010110111111B=35BFH

(注意:十六进制数以H为后缀,十进制D,八进制O,二进制B,这里的末尾B和H是强调是什么进制的)

二:16进制转为2进制

把16进制数中每一位用4位为二进制数来表示(不足四位用0补充),即可得到相对应的二进制数,例如:

  A    1    9   C1010 0001 1001 1100

同上(在1,2,4,8中),A=2+8,所以二进制数中从右到左第2位和第四位是1,即1010

9=1+8,所以在二进制数从右到左第一位和第四位是1,即1001

三:2进制转换为10进制数

各位二进制数码乘以与其对应的权之和即为与该二进制数对应的十进制数:例如

1             0     .      1            0

2∧1 *1     2∧0 *0  .  2∧(-1)*1     2∧(-2)*0

2∧1 *1   + 2∧0 *0  .  2∧(-1)*1   +  2∧(-2)*0

=2.5

1011100.10111B = 2^6+2^4+2^3+2^2+2^-1+2^-3+2^-4+2^-5 = 92.71875D

四:10进制转换为2进制

(注意:十六进制数以H为后缀,十进制D,八进制O,二进制B,这里的末尾B和H是强调是什么进制的)

把要转换的十进制数的整数部分不断除以2,并计下余数,直到商为0为止,例如:

整数N=117D117/2=58余1(a0=1)58/2=29余0 (a1=0)29/2=14余1(a2=1)14/2=7 余0 (a3=0)7/2=3余1 (a4=1)3/2=1余1(a5=1)1/2=0余1(a6=1) 用短除法更快一点即N=117D=1110101B

对于被转换的十进制数的小数部分则应不断乘以2,并计下其整数部分,直到结果的小数部分为0为止

例如小数 N=0.8125D0.8125*2=1.625 (b1=1)0.625*2=1.25 (b2=1)0.25*2=0.5 (b3=0)0.5*2=1.0 (b4=1)所以N=0.8125D=0.1101B

五:16进制数转换为10进制数

各位十六进制数与其对应权值的乘积之和即为相应的十进制数,例如:

N=BF3CH=11*16^3+15*16^2+3*16^1+12*16^0=48956D

六:10进制转换为16进制

1:可以先转换为2进制再转换为16进制

2:除法:把要转换的十进制数的整数部分不断除以16,并记下余数,直到商为0为止:例如:

N=48956D48956/16 = 3059 余12(a0=12)3059/16=191 余3 (a1=3)191/16=11 余15 (a2=15)11/16 = 0 余11 (a3=11)所以:N=48956D = BF3CH

原码,补码,反码

原码:最高位表示符号(正数用0,负数用1),其它位表示数值位,称为有符号数的原码表示法,如图,两个原码区别就是最高位一个是0,一个是1。为什么属于有符号呢,因为他可以表示正数也可以表示负数,那你占了一个位用于表示 ± 后,表示数据大小的只能有7位了,最大为 1111 111即2∧7-1。

N=45=00101101B 【N】原码=0 0101101BM=-45 【M】原码=1 0101101B

反码:正数的反码与原码相同,符号位用0表示,数值位值不变。负数的反码符号位用1表示,数值位为原码数值为按位取反形成,即0变1,1变0,例如:

N=45=00101101B 【N】反码=0 0101101BM=-45 【M】反码=1 1010010B

补码:正数的补码与原码相同,即符号位用0表示,数值位值不变。负数的补码为反码加1形成,例如:

N=45=00101101B 【N】补码=00101101BM=-45 【M】补码=11010011B例如:11000111=-57计算方式:最高位为1,先加负号接着取反码+1=00111001=57即-57

二进制加法

在这个例子当中25 的原码:00011001 -25的补码为:1110011132 的原码:00100000 -32的补码为:11100000即-25等于25的反码+1最终的结果为 11000111即-57,将其反码加1之后转化为十进制为57(验证了结果的正确性)在这里11000111最前面应该还有个1,在这里系统将其抛弃了(但不是彻底抛弃,这里的进位被PSW寄存器里记录了,去掉他并不影响结果)

补码的表数范围

N位二进制数能够表示的 无符号整数范围:0 ~ 2^n - 1如8位:0~255 (8个位都表示数值了,最大2^8-1)N位二进制数能够表示的 有符号整数范围:-2^(n-1) ~ 2^(n-1) - 1如8位:-128~127 (因为最高位0,1表示正负,其余7位才表示数值,最大2^7-1)

计算11111111转换为十进制数:

  • 无符号:2^8-1=255
  • 有符号:最高位是1,先确定是负数

接着取反码:0000 0000

接着+1

0000 0001 = 1

加上确定是负数,最终结果为-1

所以无符号时为255,有符号时为-1

二进制,十进制,十六进制转化相关推荐

  1. php 十六进制变中文版,php 汉字转化成 二进制 十进制 十六进制 数目字

    php 汉字转化成 二进制 十进制 十六进制 数字 /** * 把一个汉字转为unicode的通用函数,不依赖任何库,和别的自定义函数,但有条件 * 条件:本文件以及函数的输入参数应该用utf-8编码 ...

  2. 微型计算机有多少进制,微型计算机原理二进制十进制十六进制.doc

    微型计算机原理二进制十进制十六进制 1:微处理器和微型计算机的发展 自1946年世界上第一台计算机问世以来,计算机科学与技术得到了飞速的发展,短短50多年时间,已经经历了电子管.晶体管.集成电路.超大 ...

  3. 二进制十进制十六进制转换_二进制数制到十进制数制的转换

    二进制十进制十六进制转换 Prerequisite: Number systems 先决条件: 数字系统 To convert binary number to its respective deci ...

  4. 关于Java二进制和十六进制转化的一点问题

    今天在学习Spring Security在做密码加密配置时,有个地方需要做一个二进制和十进制的转化,自己便随手写了一个,没想到,在运行了几次之后始终验证不过,郁闷的不行,由于我用的是Spring Se ...

  5. 二进制,十进制,十六进制

    生活中其实很多地方的计数方法都多少有点不同进制的影子. 比如我们最常用的10进制,其实起源于人有10个指头.如果我们的祖先始终没有摆脱手脚不分的境况,我想我们现在一定是在使用20进制. 至于二进制-- ...

  6. 【iOS】二进制十进制十六进制转换器

    还是那句话,没有第一时间在网上找到想要的参考代码,就自己动手做了一个. 总感觉进制转换应该有系统方法,哪位大神若知道还请不吝赐教. // // MainViewController.m // Comp ...

  7. postgreSql按位运算、二进制十进制十六进制的表法和转换

    -- postgre 按位运算符 以及结果 注释的后面为结果SELECT 1|2 ; -- 3SELECT 1&2 ; -- 0SELECT 1*2 ; -- 2SELECT 4>> ...

  8. QT 进制转换小工具 二进制/十进制/十六进制/浮点数转换

    野生小菜鸟一只,程序效果如下,希望大家多多支持. 1. 按table切换LineEdit: 2. 输入要计算的数据后,按回车执行,计算后的数据会显示在同一行的另一个控件中. 3. LIneEdit内加 ...

  9. php数字转化二进制,php 汉字转化成 二进制 十进制 十六进制 数字

    /** * 把一个汉字转为unicode的通用函数,不依赖任何库,和别的自定义函数,但有条件 * 条件:本文件以及函数的输入参数应该用utf-8编码,不然要加函数转换 * 其实亦可轻易编写反向转换的函 ...

  10. java、计算机进制转换,二进制 十进制 十六进制 的进制等等!

    2进制CPU使用,8进制很少见,10进制适合人类使用,16进制适合编译器和底层程序员使用,希望对你有所帮助! 以下文章是自己从别的地方复制粘贴过来, 总结了一下. 虽然看着有点乱, 但是想学 ,就能看 ...

最新文章

  1. Java面试题之一 (转)
  2. linux tf命令,Linux系统命令介绍之vmstat命令详解
  3. 9 个基于JavaScript 和 CSS 的 Web 图表框架
  4. 久等了,「阿里妈妈技术」来啦!
  5. LeetCode 1570. 两个稀疏向量的点积(哈希)
  6. Html-Css标签lable中定义宽度需要其他的支持
  7. 关于 MySQL 8.0 新特性“隐藏索引”的一点思考
  8. ASP.NET【3】--ASHX
  9. 第五章 代码重用与函数编写(1)
  10. 知识图谱学习--网易云唐宇迪老师课程记录
  11. 【线性模型引论】王松桂著 课后习题2.2参考答案
  12. 天翼网关F452超级密码获取(亲测有效)
  13. Flutter Opacity 不透明度
  14. FOI冬令营 Day1
  15. (转载) Android RecyclerView 使用完全解析 体验艺术般的控件
  16. 刚性仿射变换算法_一种视觉定位中的点集仿射变换算法的制作方法
  17. Cannot find entry in either framework or device manifest
  18. Redis系列(五):Redis的过期键删除策略
  19. C语言标题下面程序用于输入三角形的三条边a,b,c,判断它们能否构成三角形,若能,则指出是何种三角形:等腰三角形、直角三角形、等腰直角三角形,一般三角形。若不能,则输出“不是三角形\n”
  20. blender_mmd_tools_extra 插件介绍

热门文章

  1. 网络安全等级保护制度介绍
  2. 在windows10上安装texlive的参考文档
  3. 安装这5个插件后,PyCharm好用到起飞
  4. html5 获取本机号码,如何获取本机手机号码
  5. TPC-H介绍及实战总结
  6. Semaphore释疑
  7. 微信卡券功能JAVA版(PS : 其实无关乎什么语言拉 :) )
  8. PHP爬虫的三种方法
  9. 【软件工程】 期末考试 重点复习
  10. mysql 嵌入式linux版本_PHP专栏 : MySQL 数据库安装详细