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
看懂了嘛
還有提醒一局
在計算機中 所有負數都是由補碼實現