二级制与十进制关系

1.十进制与二进制相互转换

1.1 十进制转为二进制

1.1.1 正整数转二进制

除二取余,倒序排列,高位补零。
注:计算机内部表示数的字节单位是定长的,如8位,16位,或32位。所以,位数不够时,正数原码,反码,补码:整数高位补0,小数低位补0。在这里插入图片描述

1.1.2 负整数转二进制

先将对应的正整数转换成二进制后,对二进制取反,然后对结果再加1。
以上实际为,把对应的负数取二进制原码,再取反码,最后取补码。补码即为对应的二进制值。
注:计算机内部表示数的字节单位是定长的,如8位,16位,或32位。所以,位数不够时:

  • 负数原码:整数高位补0,小数低位补0;
  • 负数反码:整数高位补1,小数低位补1;
  • 负数补码:整数高位补1,小数低位补0;

1.1.3 小数转二进制

十进制小数转换成二进制小数采用"乘2取整,顺序排列"法。具体做法是:用2乘十进制小数,可以得到积,将积的整数部分取出,再用2乘余下的小数部分,又 得到一个积,再将积的整数部分取出,如此进行,直到积中的整数部分为零,或者整数部分为1,此时0或1为二进制的最后一位。或者达到所要求的精度为止。
  然后把取出的整数部分按顺序排列起来,先取的整数作为二进制小数的高位有效位,后取的整数作为低位有效位。

  如:0.625=(0.101)B 
  0.625*2=1.25======取出整数部分1 
  0.25*2=0.5========取出整数部分0 
  0.5*2=1==========取出整数部分1 

  再如:0.7=(0.1 0110 0110...)B 
  0.7*2=1.4========取出整数部分1 
  0.4*2=0.8========取出整数部分0 
  0.8*2=1.6========取出整数部分1 
  0.6*2=1.2========取出整数部分1 
  0.2*2=0.4========取出整数部分0  
  0.4*2=0.8========取出整数部分0 
  0.8*2=1.6========取出整数部分1 
  0.6*2=1.2========取出整数部分1 
  0.2*2=0.4========取出整数部分0

1.2 二进制转十进制

1.2.1 整数二进制转十进制

方法一:二进制转为十进制要从右到左用二进制的每个数去乘以2的相应次方(次方从0开始),再将其每个数进行相加。
在这里插入图片描述

例如:(1101)2转十进制:
在这里插入图片描述
方法二:先把2的次方依次排列出来,再将二进制数倒序依次排列,最后再把对应1的相加起来,0不加,具体如图:
在这里插入图片描述
即1+4+8=13。
在这里插入图片描述

1.2.2 二进制小数转为十进制

操作整数位小数点小数点后一位小数点后两位小数点后三位小数点后四位结果
0.11110.1111
换算次方2^(0).2^(-1)2^(-2)2^(-3)2^(-4)
换成分数0/2.1/21/41/81/16
换成十进制0.+ 0.5+0.25+ 0.125+0.06250.9375

1.3 有符号数和无符号数

其实就是正数和负数,最高位(第一位)是符号位,正数符号位为“0” ,负数符号位为“1” 。如 1和-1表示为如下
0000 0001
1000 0001

1.4 二进制的原码、反码、补码

1.4.1 原码

原码就是机器数,是加了一位符号位的二进制数(因为数值有正负之分)
如1和-1的原码表示为如下:
0000 0001
1000 0001

1.4.2 反码

正数的反码与其原码相同。负数的反码是对其原码逐位取反,但符号位除外。一般用于原码转补码,或补码转原码的过渡码。
8位二进制码能表示的反码范围是-127~127。
8位的-128没有反码。
首先看-0,[-0]原码=1000 000,其中1是符号位,根据反码规定,算出[-0]反码=1111 1111,再看-128,[-128]原码=1000 000,假如让-128也有反码,根据反码规定,则[-128]反码=1111 1111,你会发现,-128的反码和-0的反码相同,所以为了避免面混淆,有了-0,便不能有-128,这是反码规则决定的。

1.4.3 补码

正数的补码和正数的原码完全一样,负数的补码等于负数的反码+1。
所有的二进制在计算机中都是以补码的形式存储的。

2.位运算

符号描述运算规则实例(以四位二进制数为例)
&两个位都为1时,结果才为1。0001&0001=1,0001&0000=0,0000&0000=0000
|两个位都为0时,结果才为0。0001|0001=0001,0001|0000=0001,0000|0000=0000
^异或两个位相同为0,相异为1。0001 ∧ 0001 = 0000 , 0001 ∧ 0000 = 1 , 0000 ∧ 0000 = 0
~取反0变1,1变0。~0 = 1 , 1 = 0
<<左移各二进位全部左移若干位,高位丢弃,低位补0。0001 < < k = 0100 , k = 2,k kk是左移的位数,这里k = 2
>>右移各二进位全部右移若干位,对无符号数,高位补0,有符号数,右移补1 11。0100 > > k = 0001 , k = 2 k是右移的位数,这里k = 2
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值