当前位置: 首页 > article >正文

数据表示—二进制与十进制转换

1. 二进制转十进制

按照数据类型分为三种:无符号的二进制整数有符号的二进制整数小数二进制数

1.1 无符号的二进制整数

计算技巧: 从二进制数的右边第一位起,从右往左,先用二进制位置上的数乘以2的相应位数的幂,然后把每一位的乘积相加即可得到二进制数对应的十进制数。

例如:二进制整数 110,从右往左分别标记位数,0,1,2。(注意,位数从0开始标记),根据二进制位置上的数和位数,产生计算过程数,如下图所示:

位数210
二进制数110
计算过程数1*2^21*2^10*2^0

最后,将计算过程数字求和
1 * 2^2 = 4
1 * 2^1 = 2
0 * 2^0 = 0
最终十进制结果: 4+2+0 = 6。

1.2 有符号的二进制整数

计算技巧: 最高位是符号位(1为负数,0为正数),除去符号位后的剩余位按照无符号的二进制转换方式计算。

例如:有符号的二进制整数1110,符号位(即最高位)是1,则为负数,剩余110按照1.1的方式计算为6,最终十进制结果:-6。

1.3 小数二进制数

计算技巧: 小数分为整数位和小数位。 整数位部分按照二进制整数转换方式计算;小数部分从小数点开始向右标记位置,起始位为-1,以此标记到第-n位结束,然后以二进制小数位上的数乘以2的相应位数的-n次幂。

例如:小数二进制数 110.011,从小数点开始,整数位从右往左,从0到n,求m * 2^n的和;小数位从左往右,从-1到-n,求m * 2 ^-n的和。如下图所示:

位数210--1-2-3
二进制数110.011
计算过程数1*2^21*2^10*2^0-0*2^-11*2^-21*2^-3

最后,将计算过程数字求和
1 * 2^2 = 4
1 * 2^1 = 2
0 * 2^0 = 0
0 * 2^-1 = 0
1 * 2^-2 = 1/4 = 0.25
1 * 2^-3 = 1/8 = 0.125
最终十进制结果:4+2+0+0+0.25+0.125 = 6.375

2. 十进制转二进制

十进制转二进制,分成两个部分,整数和小数。符号就根据计算结果在最高位增加符号位即可(1为负数,0为正数)。

2.1 十进制整数转二进制

计算技巧: 将整数除以2,如果商不为0,取商继续除以2,直至商为0,将余数从下到上列出即为二进制结果。

例如:十进制整数 6 。

十进制整数6余数
除2的商数30
除2的商数11
除2的商数(除不尽直接记101

2.2 十进制小数转二进制

计算技巧: 将其分为整数和小数两部分,整数部分按照2.1计算;小数部分乘以2取整,如果结果仍有小数继续用小数部分乘2,直到小数部分为0,或者达到精度要求为止,最后将取整部分从上到下即为小数部分的二进制结果。

例如:十进制小数 6.75 ,整数部分按照2.1计算结果为110,小数部分拆分单独计算,即0.75。

十进制小数0.75取整小数部分
乘以21.5010.50
小数部分继续乘以21.0010.00

从上到下取整的二进制结果为11,最终二进制结果为110.11。

2.3 负数转二进制

计算技巧: 在最高位添加符号位(1为负数,0为正数)即可。
例如: -6.75转十进制为1110.11。


http://www.kler.cn/a/272779.html

相关文章:

  • python接口自动化的csv文件怎么创建和读取
  • Linux 常用命令 - chmod 【改变文件或目录权限】
  • 自动驾驶3D目标检测综述(八)
  • ros2笔记-6.2 使用urdf创建机器人模型
  • ASP.NET Core - 缓存之分布式缓存
  • Python调用go语言编译的库
  • goland设置保存文件时不将4个空格转为TAB
  • AI实景无人自动直播间怎么搭建?三步教你轻松使用
  • 安卓面试网络知识基础 51-55
  • 从资金管理的角度谈谈个人怎样交易现货白银
  • 代码随想录算法训练营第二十五天 | 216.组合总和III 17.电话号码的字母组合
  • 数据分析 任务3
  • Axure 中继器的Repeater属性的使用
  • Device Tree (四) - device_node -> platform_device
  • 部署高斯喷射项目gaussian-splatting
  • NetSuite多脚本性能研究
  • 图片旋转并保存图片
  • 第3关:注释
  • zookeeper快速入门五:用zookeeper实现服务注册与发现中心
  • QT中connect()的参数5:Qt::DirectConnection、Qt::QueuedConnection区别
  • 【数字孪生】Nginx发布数字孪生三维建模模型服务及调用方法
  • Jasypt 配置文件加密的用法
  • JavaScript爬虫进阶攻略:从网页采集到数据可视化
  • 基于Linux内核的socket编程(TCP)的C语言示例
  • 常用的 C# 第三方开发库
  • .Net使用ElasticSearch