c补码的代码写法

c补码的代码写法,第1张

c语言补码的表示方法是:正数的补码就是其本身,负数的补码是在其原码的基础上,符号位不变,其余各位取反,最后+1 (即在反码的基础上+1)。

[+1] = [00000001](原码) = [00000001](反码) = [00000001](补码) [-1] = [10000001](原码) = [11111110](反码) = [11111111](补码) 对于负数,补码表示方式也是人脑无法直观看出其数值的。通常也需要转换成原码在计算其数值。 一、原码 求原码: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

程序如下:

#include<stdio.h>

void main()

{

int a,b

char oper

scanf("%d%c%d",&a,&oper,&b)

switch(oper)

{

case '+':

printf("%d+%d=%d\n",a,b,a+b)

break

case '-':

printf("%d-%d=%d\n",a,b,a-b)

break

case '*':

printf("%d*%d=%d\n",a,b,a*b)

break

case '/':

printf("%d/%d=%f\n",a,b,(1.0*a)/b)

break

case '%':

printf("%d%%%d=%d\n",a,b,a%b)

break

default:

break

}

}

#include <stdio.h>

unsigned short getbits(unsigned short)

void main()

{

unsigned short a

unsigned short gebits(unsigned short)

printf("input a number:\n")

scanf("%o",&a)

printf("result:%o\n",getbits(a))

}

unsigned short getbits(unsigned short value)

{unsigned short z

z=value&0100000

if(z==0100000)

z=~value+1

else

z=value

return(z)}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/11157635.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-14
下一篇 2023-05-14

发表评论

登录后才能评论

评论列表(0条)

保存