當前位置:首頁 » 編程語言 » c語言輸入十進制補碼
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

c語言輸入十進制補碼

發布時間: 2022-10-28 20:45:13

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

看懂了嘛
還有提醒一局
在計算機中 所有負數都是由補碼實現