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

二进制与进制转换

目录

一、进制

1、进制的基本概念

2、十进制系统

3、二进制系统

二、进制转换方法

1、二进制转十进制

2、十进制转二进制

3、二进制与八进制/十六进制转换

二进制转八进制:

二进制转十六进制:

三、负数的表示:原码、反码和补码

1、基本概念

2、示例

3、补码的重要性

四、总结


一、进制

1、进制的基本概念

        我们经常听到的2进制、8进制、10进制、16进制等都是数值的不同表示形式。它们的主要区别在于"基数"不同:

  • 10进制:基数为10,使用数字0-9

  • 2进制:基数为2,使用数字0-1

  • 8进制:基数为8,使用数字0-7

  • 16进制:基数为16,使用数字0-9及A-F

例如,数值15在不同进制下的表示:

  • 2进制:1111

  • 8进制:17(通常写作017)

  • 10进制:15

  • 16进制:F(通常写作0xF)

2、十进制系统

十进制是我们日常生活中最常用的计数系统:

  • 采用"满十进一"的规则

  • 每一位都是0-9的数字

  • 每一位都有对应的位权(10的幂次方)

例如,十进制数123表示:1×10² + 2×10¹ + 3×10⁰ = 100 + 20 + 3 = 123

3、二进制系统

二进制是计算机使用的基本计数系统:

  • 采用"满二进一"的规则

  • 每一位都是0或1

  • 每一位都有对应的位权(2的幂次方)

例如,二进制数1101表示:1×2³ + 1×2² + 0×2¹ + 1×2⁰ = 8 + 4 + 0 + 1 = 13(十进制)


二、进制转换方法

1、二进制转十进制

        十进制数123表示的数值是一百二十三。这个数值的计算原理在于十进制中每一位数字都带有特定的位权:从右至左分别是个位、十位、百位...,对应的位权依次是10⁰、10¹、10²...如图所示:

        二进制和十进制原理相似,区别在于二进制每一位的权重从右到左依次是2⁰、2¹、2²...以二进制数1101为例,可以这样理解:

2、十进制转二进制

常用"除2取余法":

  1. 将十进制数除以2,记录余数

  2. 将商继续除以2,直到商为0

  3. 将余数倒序排列即为二进制表示

3、二进制与八进制/十六进制转换

由于8=2³,16=2⁴,因此可以按位分组转换:

二进制转八进制:

  • 从右向左每3位一组

  • 将每组转换为对应的八进制数字

  • 不足3位时左侧补0

例如:01101011 → 001 101 011 → 1 5 3 → 0153(0开头的数字,会被当做8进制)

二进制转十六进制:

  • 从右向左每4位一组

  • 将每组转换为对应的十六进制数字

  • 不足4位时左侧补0

例如:01101011 → 0110 1011 → 6 B → 0x6B(16进制表示的时候前面加0x)


三、负数的表示:原码、反码和补码

1、基本概念

整数的二进制表示方法包括三种形式:原码、反码和补码。

        对于有符号整数,这三种表示方法都包含符号位和数值位两部分。在二进制序列中,最高位作为符号位(0表示正数,1表示负数),其余位则为数值位。

正整数的原码、反码和补码表示完全相同。而负整数的三种表示方法则各不相同:

  1. 原码:直接将数值的正负形式转换为二进制
  2. 反码:保持符号位不变,其他位按位取反
  3. 补码:在反码基础上加1

需要注意的是,从补码转换回原码同样可以通过"取反后加1"的操作实现。

2、示例

以8位二进制表示数字5和-5:

  • 5:原码:00000101、反码:00000101、补码:00000101

  • -5:原码:10000101、反码:11111010、补码:11111011

3、补码的重要性

计算机内部使用补码存储数值,原因在于:

  1. 统一了正负数的表示方式

  2. 简化了加减法运算(减法可以转换为加法)

  3. 解决了原码中"正负零"的问题

  4. 硬件实现更简单(不需要额外的减法电路)

例如,计算5 + (-5):

  00000101 (5的补码)
+ 11111011 (-5的补码)
= 00000000 (结果为0)

四、总结

理解二进制和进制转换是计算机科学的基础。掌握这些概念有助于:

  • 理解计算机如何存储和处理数据

  • 进行底层编程和调试

  • 优化算法和数据结构

  • 理解计算机网络和加密技术等高级概念

        通过练习各种进制间的转换,可以加深对这些概念的理解,为后续学习计算机组成原理、操作系统等课程打下坚实基础。

http://www.lryc.cn/news/621040.html

相关文章:

  • SpringBoot+Vue线上部署MySQL问题解决
  • WinForm之自定义布局(了解)
  • Centos9傻瓜式linux部署CRMEB 开源商城系统(PHP)
  • C++ 仿RabbitMQ实现消息队列项目
  • ClickHouse 日常运维命令总结
  • JMeter性能测试详细版(适合0基础小白学习--非常详细)
  • 前端css学习笔记5:列表表格背景样式设置
  • 回归算法:驱动酒店智能化定价与自动化运营的引擎—仙盟创梦IDE
  • 手写MyBatis第17弹:ResultSetMetaData揭秘:数据库字段到Java属性的桥梁
  • uniapp对接极光消息推送
  • Webpack Plugin 深度解析:从原理到实战开发指南
  • 读取Kaggle下载的数据集(数据的读取 f’{path}\\CMaps\\train_FD001.txt’)
  • mlir operand
  • Day54 Java面向对象08 继承
  • Java中Record的应用
  • 机器翻译:回译与低资源优化详解
  • Java 8 新特性介绍
  • 51单片机-驱动LED模块教程
  • 广义矩估计随机近似中公式(2d)的推导
  • Linux入门DAY24
  • Python中的函数入门二
  • 小白做亚马逊广告,空烧成本不出单怎么办
  • 20道JavaScript进阶相关前端面试题及答案
  • DataHub IoT Gateway:工业现场设备与云端平台安全互联的高效解决方案
  • Git 中切换到指定 tag
  • 电子电路学习日记
  • 嵌入式Linux学习-编译内核源码
  • 17 ABP Framework 项目模板
  • 微信公众号推送文字消息与模板消息
  • ActionChains 鼠标操作笔记