C语言的二进制,十进制和十六进制

1.二进制介绍

1 二进制

我们经常听到二进制,八进制,十进制,十六进制的讲法,那么这是是什么意思呢?其实只是数字不同的表达结果而已
比如:15的各种表达

1  15的二进制  1111
2  15的八进制  17
3  15的十进制  15
3  15的十六进制  F

我们日常生活用到的都是十进制数,我们都知道,十进制中满10进1,十进制中的每一位都是由0~9的数字组成的。
二进制也是一样的,满2进1,都是由0~1的数字组成的。

1.1 2进制转10进制

十进制的123中的每一位都是有它的权重,3的权重是10^0, 2的权重是10 ^1,
3的权重是10^3;如图
在这里插入图片描述
二进制和十进制一样的,只不过权重是2^0, 2 ^1…
例如:二进制数1010就是110^3+010 ^2+110 ^1+010 ^0=10

1.2 十进制转二进制

这里用到短除法,用十进制数模2,余数存起来,商再模2…如此循环知道商0
最后得到的余数,从下往上就是高位到低位。下面我们求125的二进制是多少:在这里插入图片描述

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

8进制的每一位都是0~7之间的数字,各自写成2进制,一个数最多只需要3个二进制数字就足够了(7的二进制是111),所以二进制转八进制只要把二进制序列从右开始的每三位换算成一个八进制数字就可以了,剩余左边的不足三位的也是直接换算。
例如:
二进制的01101011,换成八进制就是0153,0开头的数字表示8进制。

16进制的每一位都是0~15之间的数字,从10开始每一位由字母a,b,c,d,e,f代替,f的二进制是1111最多是4位,同理和8进制一样的道理,一个十六进制的一位转化为二进制就是4位了。
例如:
2进制的01101011 转化为十六进制就是0x6b,0x开头的数字表示十六进制。

原码,反码,补码

整数的二进制表达方式有三种,原码,反码和补码。
分别由符号位和数值位组成,符号位0表示正,1表示负。最高位是符号位,其余是数值位。
正整数的原码,反码,补码相同
负整数的三种各不相同
原码:直接按数值转化为二进制
反码:二进制的每一位按位取反
补码:反码加一就是补码

对于整数,在内存里面是按补码的方式储存的
原因是,在计算机中,使用补码可以把符号位和数值位统一处理…

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值