1. 1111111111110100在c语言怎么把补码转换成真值
这要看你算不算符号位。
正常情况下最高位是符号位,所以最高位不变,其余位数的二进制数-1(111111111110100-1=111111111110011)再取反,即000000000001100。
算上最高位符号位1,原码就是1000000000001100,对应10进制就是-12。
2. c语言-255补码
8位补码表示 00000000零 00000001~01111111正数1~127 10000000~11111111负数-128~-1 所以可以看到8位二进制数表示的范围是-128~127
3. c语言中-10的补码怎么求出来
正数是取原码,负数是对应正数逐位取反再加一
比如19,原码用8位二进制是00010011,那么它的补码、反码都是00010011。
而对于-19,因为19的8
位原码是00010011,逐位取反得
11101100,再加1,11101101
所以-19的原码是10010011,反码是11101100,补码是11101101
4. C语言求原码的补码问题
必须要用无符号数,位运算的规定就是如此,你想,如果有符号是负数,用哪个来位运算,结果呢
进行与运算是判断该数是否最大的负数,注意补码的数值范围,负数比正数多一个,该数为最小负数,表示范围内没有对应的正数
5. 用c语言,输入一个十进制数,输出相应的二进制32位原码、补码、反码、移码和IEEE754浮点数。
#include<stdio.h>
#include<math.h>
void main()
{
int m,n,a[10],i=0,y[100],f[100],b[100],j,k;
printf("请输入一个整数:");
scanf("%d",&n);
m=abs(n);
while (m!=0)
{
a[i]=m%2;
m=m/2;
i=i+1;
}
if (n>=0)
{
for(j=0;j<i;j++) y[j]=a[j];
if ((j+1)%8!=0) for(;(j+1)%8!=0;j++) y[j]=0;
y[j]=0;
for(k=0;k<=j;k++)
{
f[k]=y[k];
b[k]=y[k];
}
}
else
{
int w=0;
for(j=0;j<i;j++) y[j]=a[j];
if ((j+1)%8!=0) for(;(j+1)%8!=0;j++) y[j]=0;y[j]=1;
for(k=0;k<j;k++) if(y[k]) f[k]=0;else f[k]=1;f[k]=1;
for( k=0;k<j;k++) {if (k==0)b[k]=f[k]+1;else b[k]=f[k]+w;if (b[k]==2){b[k]=0;w=1;}else w=0;}b[k]=1;
}
printf("原码:");for(k=j;k>=0;k--)printf("%d",y[k]);printf("\n");
printf("反码:");for(k=j;k>=0;k--)printf("%d",f[k]);printf("\n");
printf("补码:");for(k=j;k>=0;k--)printf("%d",b[k]);printf("\n");
}
6. 关于C语言中补码与原码以及十进制转换二进制的问题
楼主应该将计算机进制转换与数学进制转换分开。一般在数学上没有什么补码、原码,需要转换直接转换即可,最后加个负号。例如:-3 十进制= -11 二进制 在计算机上只有1和0,为了便于表示将负号表示为1将正号表示为0.计算机存储数据是以补码形式存储的。其实补码与原码之间的关系很简单。正数的补码就是原码本身负数的补码:符号位为1,其余位为该数绝对值的原码按位取反;然后整个数加1。
7. 输入一个十进制数,用C语言输出其原码补码反码移码(十进制数可以为正负数整数小数)
#include<stdio.h>
#include<math.h>
void main()
{
int m,n,a[10],i=0,y[100],f[100],b[100],j,k;
printf("请输入一个整数:");
scanf("%d",&n);
m=abs(n);
while (m!=0)
{
a[i]=m%2;
m=m/2;
i=i+1;
}
if (n>=0)
{
for(j=0;j<i;j++) y[j]=a[j];
if ((j+1)%8!=0) for(;(j+1)%8!=0;j++) y[j]=0;
y[j]=0;
for(k=0;k<=j;k++)
{
f[k]=y[k];
b[k]=y[k];
}
}
else
{
int w=0;
for(j=0;j<i;j++) y[j]=a[j];
if ((j+1)%8!=0) for(;(j+1)%8!=0;j++) y[j]=0;y[j]=1;
for(k=0;k<j;k++) if(y[k]) f[k]=0;else f[k]=1;f[k]=1;
for( k=0;k<j;k++) {if (k==0)b[k]=f[k]+1;else b[k]=f[k]+w;if (b[k]==2){b[k]=0;w=1;}else w=0;}b[k]=1;
}
printf("原码:");for(k=j;k>=0;k--)printf("%d",y[k]);printf("\n");
printf("反码:");for(k=j;k>=0;k--)printf("%d",f[k]);printf("\n");
printf("补码:");for(k=j;k>=0;k--)printf("%d",b[k]);printf("\n");
}
8. C语言里的补码是什么意思多举几个例子来解释.
补码,是在计算机内部,正负数的存放格式。
C 语言是高级语言。
用高级语言编程,是不用关心计算机内部的事的。
如果非要涉及计算机内部的细节,那就不是高级语言了。
很多教材书籍的作者,都没有弄明白:什么是高级语言。
计算机内部的码,有很多种了,要是讨论起来,C 语言就学不完了。
9. 在C语言中,整数的数值是以补码形式存放的,补码是什么意思啊
使用补码代表负数,就可以把减法,转化为加法运算。
那么,在计算机中只要有一个加法器,就可以做加、减法了。
使用补码的意义,就是简化了计算机的硬件。
常识:时钟倒拨 3 小时,可以用正拨 9 小时代替。
怎么计算,自己推导吧。
--------
两位十进制数,共有 100 个数字:00~99。
那么,减一,就可以用 +99 代替:
25-1 = 24
25 + 99 = (1) 24
取后两位,忽略进位 100,结果,不就是相同的吗?
只要利用一个“较大的正数”代替负数,就能把减法变加法了。
这个较大的正数,就是负数的补数。
计算公式:-1 的补数=100-1 = 99。
-2 的补数=100-2 = 98。
。。。
--------
计算机中,使用的是二进制。
二进制的补数,就改称为:补码。
八位二进制数,共有 256 个数字:0000 0000~1111 1111。
那么,-1 的补码就是 1111 1111 = 255(十进制)。
同理,-2 的补码就是 1111 1110 = 254(十进制)。
。。。
最后,-128的补码就是 1000 0000 = 128(十进制)。
计算公式:负数的补码=【256+这个负数】
零和正数,不需要求补数(补码),直接计算即可。
10. C语言 十进制-5的补码表示是什么
补码 就是 取反加一
5是不是 00000101
现取反 11111010
然后加1 11111011
看懂了嘛
还有提醒一局
在计算机中 所有负数都是由补码实现