重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
求补码的函数可以参考下面的代码,我们知道,在内存中,正数的补码等于他本身,所以直接返回a。负数的补码正是它在内存中的存在形式,这是我们定义一个unsigned int型的数值去用它来赋值,取得的就是他的补码的二进制形式。为了验证,我另外编写了一个函数,用来输出二进制,请参考。
创新互联公司为您提适合企业的网站设计 让您的网站在搜索引擎具有高度排名,让您的网站具备超强的网络竞争力!结合企业自身,进行网站设计及把握,最后结合企业文化和具体宗旨等,才能创作出一份性化解决方案。从网站策划到成都网站建设、网站设计, 我们的网页设计师为您提供的解决方案。
unsigned int buma(int a)//用来求得补码
{
if(a=0)
return a;
else
{
unsigned int temp=a;
return temp;
}
}
void twoprint(unsigned int a)//用来输出二进制
{
int temp=a%2;
if(a/2==0)
{
couta" ";return ;
}
twoprint(a/2);//这里采用了递归调用的方法
couttemp" ";
}
一、原码
求原码:X≥0,则符号位为0,其余照抄;
X≤0,则符号位为1,其余照抄。
【例1】X=+1001001 [X]原 = 01001001
【例2】X=-1001001 [X]原 = 11001001
二、反码
求反码:若X≥0,符号位为0,其余照抄;
若X≤0,符号位为1,其余按位取反。
【例3】X=+1001001 [X]反 = 01001001
【例4】X=-1001001 [X]反 = 10110110
三、补码
求补码:若X≥0,符号位为0,其余照抄;
若X≤0,符号位为1,其余取反后,最低位加1。
【例5】X=+1001001 [X]补 = 01001001
【例6】X=-1001001 [X]补 = 10110111
0100000是八进制数。即二进制数:1000 0000 0000 0000。
z=value0100000;//意义就是取value的最高位。
if(z==0100000)//如果最高位是1,即为负数,需要求补
z=~value+1;//求补,即取反+1
else
z=value;