二进制的介绍、原码、反码和补码

本文介绍了二进制的基本概念,包括二进制在生活中和计算中的应用,以及如何将十进制转换为二进制、八进制和十六进制。此外,详细讲解了原码、反码和补码在整数表示中的作用,以及在计算机系统中使用补码的原因。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

一、二进制

1.1、生活中的进制

1.2、二进制的转换

1.3扩展二进制转八进制和十六进制

 二、原码、反码和补码


一、二进制

1.1、生活中的进制

我们经常能听到二进制、八进制和十六进制这样的讲法,那这是什么意思呢?其实呀,不管是什么进制,都是数值的不同表达形式。

比如数字15:

15的二进制:1111

15的八进制:17

15的十进制:15

15的十六进制:f

我们重点说一下二进制:

我们日常是生活中所使用的是十进制,我们已经知道:

  • 十进制满10进1
  • 十进制的数字每一位都是0~9的数字组成

其实二进制也是一样的:

  • 二进制满2进1
  • 二进制的数字每一位都是0~1的数字组成

1.2、二进制的转换

十进制的123表达值是一百二十三,为什么是这个值呢?其实10进制的每一位都是由权重的,10进制的数字从右到左是个位、十位、百位......,每一位的权重分别对应10^{0}10^{1}10^{2}......

如图所示:

 二进制和十进制是类似的,只不过二进制每一位的权重是2^{n}

比如是二进制的1101,该怎么理解呢?

那么十进制和二进制怎么进行转换呢?

 

每次除以2然后得出的余数从下往上换算出来就是二进制了。

1.3扩展二进制转八进制和十六进制

8进制的数字每⼀位是0~7的,0~7的数字,各⾃写成2进制,最多有3个2进制位就⾜够了,⽐如7的⼆ 进制是111,所以在2进制转8进制数的时候,从2进制序列中右边低位开始向左每3个2进制位会换算⼀ 个8进制位,剩余不够3个2进制位的直接换算。

就比如图上二进制的01101011,换成八进制:0153,0开头的数组,会被当做八进制

 

 我们打印0153,打印出来的是107,而107的二进制就是01101011

接下来看二进制转化为十六进制

16进制的数字每⼀位是0~9,a ~f 的,0~9,a ~f的数字,各⾃写成2进制,最多有4个2进制位就⾜够了, ⽐如 f 的⼆进制是1111,所以在2进制转16进制数的时候,从2进制序列中右边低位开始向左每4个2进 制位会换算⼀个16进制位,剩余不够4个⼆进制位的直接换算。

还是二进制的01101011,转换成十六进制,0x6b,0x开头的数值表示16进制

 我们打印一下0x6b,看看打印出来是不是107

 二、原码、反码和补码

整数的二进制表示方法有三种,即原码、反码和补码。三种表示方法均有符号位和数值位两部分,符号位0表示“正”,1表示“负”,数值为最高位的一位是被当作符号位,剩余的都是数值位。正整数的原码、反码和补码都相同。负整数的三种表示方法各不相同。

举个列子:

正整数1的原码、反码和补码都是

00000000 00000000 00000000 00000001

而负整数-1的原码、反码和补码是

10000000 00000000 00000000 00000001

11111111 11111111 11111111 11111110

11111111 11111111 11111111 11111111

这个有什么规则呢?负整数的原码、反码和补码的规则是:

  • 原码:直接将数值按照正负数的形式翻译成⼆进制得到的就是原码。
  • 反码:将原码的符号位不变,其他位依次按位取反就可以得到反码。
  • 补码:反码+1就得到补码。

对于整型来说,数据存放内存中其实存放的就是补码,为什么呢?

在计算机系统中,数值一律用补码来表示和存储。原因在于,使用补码,可以将符号位和数值域统一处理:同时,加法和减法也可以统一处理(cpu只有加法器)此外补码与原码相互转换,其运算过程是相同的,不需要额外的硬件电路。

今天就是这些内容啦。今天《甜甜的》!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值