补码计算方法
Posted CodeAllen2022
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了补码计算方法相关的知识,希望对你有一定的参考价值。
很基础的知识,但是确实很多人并不知道怎么计算,总结了下,可以收藏,需要的时候看下。
与编程息息相关
学习目标:
在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
记住下边图就行了
以上是关于补码计算方法的主要内容,如果未能解决你的问题,请参考以下文章