二进制与进制转换与原码、反码、补码详解--内含许多超详细图片讲解!!!

前言

今天给大家分享一下C语言操作符的详解,但在此之前先铺垫一下二进制和进制转换与原码、反码、补码的知识点,都非常详细,也希望这篇文章能对大家有所帮助,大家多多支持呀!

操作符的内容我放在我的下一篇文章啦,大家一定要看哈!!!

目录

前言

目录

一、二进制和进制转换

1.    10进制转化为10进制

2.    2进制转化为10进制 

2.1  10进制转化为2进制

3.    2进制转8进制和16进制

3.1   2进制转8进制

 3.2   2进制转16进制

二、原码、反码、补码

为什么数据存放的是补码?

结尾


一、二进制和进制转换

我们所说的2进制、8进制、10进制、16进制就是数值的不同表现形式

eg:13的2进制:1101

     13的8进制:15

     13的10进制:13

     13的16进制:d

1.    10进制转化为10进制

eg:123

  • 从个位开始,平方都是从0先开始

2.    2进制转化为10进制 

2进制是由(0~1)的数字组成

10进制是由(0~9)的数字组成

eg:1101

  • 相比十进制转化为十进制,这次的底数变为2了
  • 先分别算每一项,加在一起,别忘记乘上所在位数对应的数字

2.1  10进制转化为2进制

eg:125

所得出的余数从下往上写就是转化完的二进制,为01111101,即1111101。

大家动手操作一下将它再转化为10进制!!!

注意:当数字比较小时,可以使用下图所示方法

如果是22呢,就为10110啦

3.    2进制转8进制和16进制
  • 8进制是由(0~7)的数字组成
  • 16进制较为特殊,是由(0~9)、(a~f)组成的
3.1   2进制转8进制

首先,将0~7的数字各自写成2进制,最多有3个二进制位,所以像2的二进制本身是0,需要将它写成010,这个换算方法在上一节标红的注意,很实用,望大家都能掌握,在上图我已经先列出来了,因为8进制的每一位是0~7的数字,所以只需列出7个即可。

然后从2进制序列中右边低位开始向左每3个2进制位会换算一个8进制位,剩余不够3个2进制位的直接换算。

如图是2进制的0110101,从最右边开始依次取三个

011:3

101:5

001:1

但是值得注意的是,换算后的153,需要写成0153,0开头,才会被当做8进制 

大家可以上机调试一下,153与0153是不同的。

 3.2   2进制转16进制

2进制转化为16进制与转化为8进制相同,是将0~9、a~f各自写成2进制,需要4个2进制位

eg:2进制的01101011

同时我也将二进制都列了出来,但是建议还是要动手算算。

所以转化为的结果为0x6b,相同的,16进制前要加上0x

二、原码、反码、补码

  • 整数的二进制形式有三种:原码、反码、补码。
  • 有符号整数的三种表示方法均有符号位和数值位两部分,二进制序列中,最高的一位被当做符号位,剩余的都是数值位。
  • 即正数最高位显示0,负数最高位显示1。
  • 整数分为正整数与负整数。
  • 在正整数中:原码=反码=补码。
  • 在负整数中:
  1. 直接将数值按照正负数的形式翻译成二进制得到的就是原码
  2. 将原码的符号位不变,其他一次按位取反就是反码(1变成0,0变成1,符号位不变)
  3. 反码+1得到补码

例:a=3与a=-3; 

注意:逢二进一,如果反码尾数是101,则变成110

整数在内存中存储的是2进制的补码

为什么数据存放的是补码?

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

下图是分析的过程

结尾

这次的分享就到这里啦,这些都是为了接下来的操作符做铺垫,也在我的主页里! 

  • 27
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 13
    评论
评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值