惠州市胜克机电设备有限公司 版权所有
Copyright By www.hzskjd.com |
为什么需要学习补码? 计算机中保存数据都是以补码来保存的。 什么是不够位,也就是你所定义的变量在计算机中所占 的字节大小,可使用sizeof(数据类型),查看占用字 节大小,一般int占用4字节,32位
补码:
原码
也叫 符号-绝对值码
最高位0表示正 1表示负,其余二进制位是该数字的绝对值的二进制位
原吗简单易懂
加减运算复杂
存在加减乘除四种运算,增加了cpu的复杂度
零的表示不唯一
反码
反码运算不便,也没有在计算机中应用
移码
移码表示数值平移n位,n称为移码量
移码主要用于浮点数的阶码的存储
已知十进制求二进制
正整数转二进制
除2取余,直至商为零,余数倒序排序
注意:正整数的补码,反码,原码都相同!
负整数转二进制
先求与该负数线对应正整数的二进制代码,然后将(除符号位)所有位取反,末尾加1, 不够位数时,左边补1
例:-54D (int,32bit)
(将10进制转换成二进制最快的方法是,现将十进制转换成16进制;54D/16=0X 36;对应的二进制:0011 0110 )
二进制:1000 0000, 0000 0000, 0000 0000,0011 0110
原码: 1000 0000, 0000 0000, 0000 0000,0011 0110
反码: 1111 1111, 1111 1111, 1111 1111,1100 1001
补码:反码加1
1111 1111, 1111 1111, 1111 1111,1100 1010
F F F F F F C A
程序验证:
#include "stdafx.h"
int _tmain(int argc, _TCHAR* argv[])
{
int i,j;
i = 0xFFFFFFCA;
printf("INT在系统中占用%d字节\n",sizeof(i));
printf("十六进制:%#x",i);
printf("对应十进制是:%#d",i);
while(1);
return 0;
}
![]()
零转二进制
全是零
已知二进制求十进制
如果首位是0,则表明是正整数,按普通方法来求
如果首位是1,则表明是负整数
将所有位取反,末尾加1,所得数字就是该负数的绝对值
如果全是零,则对应的十进制数字就是零
CHAR 类型是1个字节,所能存储的十进制为:+127到-128;
|
惠州市胜克机电设备有限公司 版权所有
Copyright By www.hzskjd.com |