線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:936
推到 Plurk!
推到 Facebook!

NOT運算子問題

尚未結案
syao
初階會員


發表:66
回覆:63
積分:25
註冊:2005-02-02

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-08-07 02:46:04 IP:59.104.xxx.xxx 未訂閱
#include 
#include     void main(void)
{
 unsigned short int x=100,y=50,p=3,xx;
 xx=~x; //為什麼~x要先指定給xx   
 printf("p=3\n");
 printf("x=01100100\n");
 printf("y=00110010\n");
 printf("--------------------\n");
 printf("not x    ==> %d\n",xx);
 printf("x and y  ==> %d\n",(x & y));
 printf("x or y   ==> %d\n",(x | y));
 printf("x xor y  ==> %d\n",(x ^ y));
 printf("x >> p   ==> %d\n",(x >> p));
 printf("x << p   ==> %d\n",(x << p));
 system("pause");
}    
輸出結果 p=3 x=01100100 y=00110010 -------------------- not x ==> 65435 x and y ==> 32 x or y ==> 118 x xor y ==> 86 x >> p ==> 12 x << p ==> 800 請按任意鍵繼續 . . . printf("not x ==> %d\n",~x);//為什麼這樣會不行還要先指定給xx=~x,但其他的& >> << | ^都不需要這樣做法?? printf("not x ==> %d\n",~x); //為什麼顯示-101? x=100 轉成二進位 01100100 再做NOT 10011011這樣應該是 155 為什麼是-101?? -101是100的二補數嗎?? not x ==>65435 轉成二進位是1111111110011011 最高位bit為1時不是代表負數嗎???編譯數是如何判斷是正數? unsiged short int是16 bit最高位bit都是1搞不懂是如何判斷為正數 謝謝 發表人 - syao 於 2005/08/07 03:10:56
richtop
資深會員


發表:122
回覆:646
積分:468
註冊:2003-06-10

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-08-07 12:05:06 IP:211.76.xxx.xxx 未訂閱
syao 您好:    一個整數變數是不是有正有負,是依unsigned來決定! 一般說來,最左方的位元是符號位元,用來代表正負數。是0的話表示是正數;反之為負。 但是如果整數型態變數宣告為unsigned,那就是無正負號數,通通是正的,純粹拿來計數。 printf(.)可以參考一下BCB的線上說明:printf Conversion-Type Characters。 還有如果您要做的是純粹的位元運算,建議變數要用unsigned宣告! 否則會出現不想要的結果,之前我也吃過這個虧!    
 printf("sizeof(short int)=%d\n", sizeof(short int) );
 printf("sizeof(1)=%d\n", sizeof(1) ); // an integer of value 1 without type assigned 
 printf("not x    ==> %d\n", ~x);  // as an integer 
 printf("not x    ==> %u\n", ~x);  // as an unsigned integer 
 printf("not x    ==> %d\n", xx);  // as an unsigned short integer
RichTop 敬上 =====***** 把數學當工具,可以解決問題;將數學變能力,能夠發現並解決問題! =====#####
系統時間:2024-05-18 6:08:10
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!