补码计算方法
很基础的知识,但是确实很多人并不知道怎么计算,总结了下,可以收藏,需要的时候看下。
与编程息息相关
学习目标:
在vc++6.0中int类型所能存储的数字的范围是多少
int类型所能存储的最大正数用十六进制表示:7FFF FFFF
int类型所能存储的绝对值最大的负数用十六进制表示是:80000000
最小负数的二进制代码是多少
最大正数的二进制代码是多少
已知一个整数的二进制代码求出原始的数字
数字超过最大的正数会怎样
补码:
原码:也叫 符号-绝对值码
最高位表示正 1表示负 ,其余二进制位的数字的绝对值的二进制位
原码简单,但是加减复杂,存在加减乘除四种运算,增加了CPU的负荷
而且0的表示不一样
反码:运算不便,也没有在计算机中应用
移码:表示数值平移n位,n称为移码量
移码主要用于浮点数的阶码的存储
*******************************************
补码:重点是补码,主要是用来解决整数的存储
十进制转二进制
除3取余,直到商为0,余数倒序排列
*******************************************
1.负整数转二进制
先求与该负数相对应的正整数的二进制代码,然后将所有为取反,末尾加一,不够位数时,左边补1
例如:(-3)
正整数为:011
取反:100
末尾加一:101
占四个字节,32位,所以补29个1
就是 FFFF FFFD
-
/*2018年1月6日13:01:18
-
-
*补码运算
-
-
*/
-
-
# include<stdio.h>
-
-
int main(void)
-
-
{
-
-
int i =-3;
-
-
printf("%#X\n",i);
-
-
return 0;
-
-
}
-
-
/*输出:0XFFFFFFFD
-
-
*
-
-
*/
-
2.已知二进制求十进制
如果首位是0,则表明是正整数,按普通的方法来
如果首位是1,则表明是负整数
将所有位取反,末位加一,所得数组就是该负数的绝对值,位数不够补1(因为是负数)
101111
先取反加一 010001
负数的绝对值: -17
注意:在计算机实验时,前边注意
-
/*2018年1月6日19:34:47
-
-
*补码运算,二进制计算
-
-
*/
-
-
# include<stdio.h>
-
-
int main(void)
-
-
{
-
-
int i =0xFFFFFFEF;
-
-
printf("%d\n",i);
-
-
return 0;
-
-
}
-
-
/*
-
-
*输出:-17
-
-
*/
-
***************
作业:8位二进制转化为十进制
0000 0000 0
0000 0001 1
.
.0111 1111 7F 7*16+15=127 最大值(二进制是有正负的)
1000 0000 -128
记住下边图就行了
文章来源: allen5g.blog.csdn.net,作者:CodeAllen的博客,版权归原作者所有,如需转载,请联系作者。
原文链接:allen5g.blog.csdn.net/article/details/89977242
- 点赞
- 收藏
- 关注作者
评论(0)