① c語言問題求助
二進制11111111代表-127,是按原碼規則來算。若按補碼規則,二進制11111111算出來是-1。
文中說的是10000000代表-128。
詳細描述如下:
[+1] = [00000001]原= [00000001]反= [00000001]補
[-1] = [10000001]原= [11111110]反= [11111111]補
計算機將第1位作為符號位,0表示正數,1表示負數。
原碼:原碼很好理解,第1位是符號位,其餘位表示數值。
反碼:
(1)正數:正數反碼是其本身。
(2)負數:去掉原碼符號位,其餘位按位取反。
補碼:
(1)正數:正數補碼是其本身。
(2)負數:在反碼基礎上加1。
由上述定義可知:
[+0] = [00000000]原= [00000000]反= [00000000]補
[-0] = [10000000]原= [11111111]反= [00000000]補
既然+0和-0的補碼一致,所以只需保留一個(+0和-0原碼不同,注意看符號位)。
這樣一來,「[-0] = [10000000]原」相當於沒有使用,於是規定:「[10000000]」為-128。
既然是「規定」,就不能按原碼、反碼、補碼的規則計算了。設計計算機時就在硬體中設置為:10000000代表-128。
之所以引入補碼,是為了消除減法,用加負數來替代減法運算,這樣讓CPU設計更簡單。
② C語言用整數「1」表示「邏輯真」,用整數「0」表示「邏輯假」。 在判斷一個數據的「真」或「假」時,以0和
在C語言中,可以用1、0來表示邏輯的真、假;也可以用表達式來表示,其中表達式正確則表達式的結果為1,也就是真,反之則為0;當表達式的結果是一個具體的數字時,正數則為真,0和負數都為假。
③ C語言中1和0代表什麼
邏輯表達式的值應該是一個邏輯量「真」或「假」。C語言編譯系統在表示邏輯運算結果時,以數值1代表「真」,以0代表「假」,但在判斷一個量是否為真時,以0代表「假」,以非0代表「真」。即將一個非零的數值認作為「真」。
④ C語言中「1」和「0」那個表示正確哪個表示錯誤謝謝!
非零表示true,0表示false;只要是非零就是正確哈!
⑤ 在C語言中正確的是用0還是1哦
在c語言中,true為1,false為0
⑥ c語言。0按位取反是1還是-1,1按位取反是0嗎
i為int類型 通常佔4個位元組
0的原碼:0000 0000 0000 0000 0000 0000 0000 0000
取反: 1111 1111 1111 1111 1111 1111 1111 1111
最高位是1所以是負數,求其原始數據,方法是
再次取反加1(符號位不變)
取反: 1000 0000 0000 0000 0000 0000 0000 0000
加1 1000 0000 0000 0000 0000 0000 0000 0001
所以是 -1
⑦ C語言中正整數的定義int也包括了負整數!
C語言基礎沒學過嗎,整型在數值上分為了無符號和有符號。
區別在於在內存空間的存儲上,高位是不是代表符號位,有符號位的最高位是1則是負數,0是正數
其餘位則為數值部分,但是計算機存儲是以補碼形式存儲的,方便計算。
無符號位應該是根據char型來的,畢竟char型是不需要符號位的8位二進制數,可以表示256個字元
無符號整數提供個更寬的正數部分,也為一些實際情況提供了更好的表示。
int型默認定義為有符號整數,最高位為符號位,要定義正整數,用unsigned
int
⑧ c語言中0與1以及0與非零有區別么
c語言中0與1以及0與非零沒有區別
C中邏輯運算的結果只有兩種:真
與
假,
假用數值表示為0,非0表示為真,一般會用1來表示。
C語言中提供了三種邏輯運算符:
&&(與運算)
||(或運算)
!(非運算)
其求值規則如下:
1)
與運算(&&)
參與運算的兩個量都為真時,結果才為真,否則為假。例如:
5>0
&&
4>2
由於5>0為真,4>2也為真,相與的結果也為真。
2)
或運算(||)
參與運算的兩個量只要有一個為真,結果就為真。
兩個量都為假時,結果為假。例如:
5>0||5>8
由於5>0為真,相或的結果也就為真。
3)
非運算(!)
參與運算量為真時,結果為假;參與運算量為假時,結果為真。例如:
!(5>0)
的結果為假。
雖然C編譯在給出邏輯運算值時,以「1」代表「真」,「0
」代表「假」。但反過來在判斷一個量是為「真」還是為「假」時,以「0」代表「假」,以非「0」的數值作為「真」。例如: 5和3均為非「0」值,因此5&&3的值為「真」,即為1。
又如: 5||0的值為「真」,即為1。
⑨ C語言中什麼時候0表示真,1表示假
C語言規定,1為真(TRUE),
0為假(FALSE)。
所以題目本身是一個偽命題,在C語言的環境下,任何時候都不會出現0為真1為假的情況。
擴展開來,用來判斷的並不一定是1和0兩種,在出現其它值的情況下,C語言會做如下操作:
1
把非整型類型的值,如浮點型,指針等,強制轉為整型。
2
判斷該整型值是否為0。
3
如為0,則值為假;如不為0,則值為真。
⑩ c語言中0與1以及0與非零有區別么
沒有區別。
C語言判斷真假時,以0為假,非0為真,即1也是表示真。
通常使用邏輯變數的做法:
定義一個int類型變數,當變數值為0時表示false,值為1時表示true。
int flag;
flag = 0;
......
flag = 1;
if( flag ){......}
(10)c語言1和0哪個是正數擴展閱讀:
C99提供了_Bool 型,所以布爾類型可以聲明為 _Bool flag。
_Bool依然仍是整數類型,但與一般整型不同的是,_Bool變數只能賦值為0或1,非0的值都會被存儲為1。
C99還提供了一個頭文件 <stdbool.h> 定義了bool代表_Bool,true代表1,false代表0。只要導入 stdbool.h ,就能非常方便的操作布爾類型了。
舉例:
#include <stdbool.h>
#include <stdio.h>
//計算n!,n的值在main中定義
int main(void){
int n = 10; //計算疊乘數
int sum = 1; //用來存放疊乘的結果
bool flag = false; //疊乘標記
int num = n; //循環次數
while( !flag ){
sum = sum * (num--);
//當num=1時結束循環
if( num == 1){
flag = true;
}
}
printf ("%d的疊乘值為 %d ", n, sum);
return 0;
}