include stdio h mainint a 1 printfd,u,o,x n ,a,a,a,a結果怎麼算出來的告訴一下

時間 2021-10-20 12:55:37

1樓:匿名使用者

這道題首先要理解一個概念,就是-1在繼續計算機中是以補碼形式儲存的,亦即在計算機中儲存的值為二進位制形式1111 1111 1111 1111 1111 1111 1111 1111(假定為32位系統)。當printf格式輸出字串為%d時,系統會將儲存的值以有符號數整數形式輸出,所以輸出值為-1;%u則表示以無符號整數形式輸出,所以值為4294967295;%o表示以八進位制整數形式輸出,所以值為37777777777,;%x表示以十六進位制整數形式輸出,所以值為ffffffff。要理解這個只要明白不同進位制值之間的轉換和計算機中原碼、反碼、補碼的關係就可以了。

2樓:俊爺丶以瘋

在目前的電腦上執行的結果應該是: -1,37777777777,4294967295 你給的答案應該是按照16位的情況算出來的。 第一個輸出應該沒什麼疑問 第二個和第三個輸出本質是一樣的,只不過第二個是以八進位制表示的,其實表示的是一個數。

下面再說說第三個數,-1用二進位制表示是1111,1111,1111,1111; 1111,1111,1111,1111

有一例題如下求執行結果。

3樓:撿到的幸福

這裡說是不對的。

要看什麼機器什麼的編譯器才能得出結果。

的確a=65535 十六進位制是0xffff但如果unsigned int 型別是4位元組的,你列印出來的依然是a=65535

如果unsigned int 型別是2位元組的,這時就是-1了因為計算機採取的是補碼來儲存資料的

a=65535 二進位制就是1111 1111 1111 1111,這是補碼,第一位是符號位,等於1時就表示是負數。

111 1111 1111 1111 減1再取反就是000 0000 0000 0001 這就是十進位制的1了

再加上負號就是-1了

int a=65535,int b=-1,printf("%d,%o,%x,%u", a, a, a, a); printf("%d,%o,%x,%u", b, b, b, b);結果

4樓:匿名使用者

int是16位有符號整型,正數在計算機中以原碼方式儲存,負數則用補碼形式儲存。

-1是負數,以補碼形式儲存,即0xffff65535的原碼也是0xffff

所以有這樣的結果也就不奇怪了。

補碼:保持符號位不變,其他位按位取反(即反碼)再加一,即可得到該數的補碼

5樓:匿名使用者

這個啊,有符號的int型的範圍是-32768~32767,無符號的是0~65535。有符號的int數是採用補碼錶示的,int型是2個位元組16位,最高位是符號位,0表示正1表示負。從負數的補碼得到真值時,將符號位之外的所有位取反後,再加個1,前面再加個負號得真值。

65535的十六進位制表示是ffff,即二進位制的1111 1111 1111 1111,最高位是1表示這是一個負數,將後面的111 1111 1111 1111取反,得000 0000 0000 0000,再加個1得000 0000 0000 0001即1,再新增個負號得-1,其實用補碼來表示-1時,就是ffff。如果把ffff當無符號數看,自然就是65535了。%o那是8進位制,應該是當做8進位制的無符號數處理了。

二進位制、八進位制、十六進位制的轉換很簡單的。

6樓:匿名使用者

首先要搞清楚不同格式輸出是怎麼回事

格式字元 意 義d 以十進位制形式輸出帶符號整數(正數不輸出符號)o 以八進位制形式輸出無符號整數(不輸出字首0)x,x 以十六進位制形式輸出無符號整數(不輸出字首ox)u 以十進位制形式輸出無符號整數

f 以小數形式輸出單、雙精度實數

e,e 以指數形式輸出單、雙精度實數

g,g 以%f或%e中較短的輸出寬度輸出單、雙精度實數c 輸出單個字元

s 輸出字串

搞清楚了,就好解釋了

第一:對於a=65535,其的二進位制為111....1111(16個1),按%d輸出,是有符號的,而111....

1111(16個1)是-1的二進位制(有符號),那麼結果就是-1了,%u輸出,無符號,結果就對了,111....1111(16個1)的十進位制為65535,%o是按八進位制輸出,111....1111(16個1)的八進位制為177777(不會轉繼續提問吧,查書也行),%x是按16進位制輸出,111....

1111(16個1)的16進製為ffff,就是結果了;

第二:對於b=-1,上面說了,它的二進位制也是一樣的,為111....1111(16個1),解釋上面一樣

總結:對於此題,搞清楚每個格式輸出的意義,還有就是數字在電腦中的儲存形式,為二進位制,要求會轉換,轉換的方法有很多,你去查下吧

以下程式的輸出結果是() #include main() {int x='f'; printf("%d,%o,%x\\n",k,k,k); }

7樓:

a在%o下多了一個0, 在%x下多了0x,printf輸出時不帶這種額外的格式化的字元。如要想要,可以這樣:

printf("%d,0%o,0x%x\\n",k,k,k);

、下面程式的輸出是

8樓:匿名使用者

【正確答案】 d k=13,k=15,k=d【解析】主要考察printf的輸出格式和進位制問題,輸出的格式控制部分,只需用對應的變數值替代即可

%d 十進位制 就是13

%o 八進位制 就是015

%x 十六進位制 就是 0xd(但是列印 不會列印0,0x字首)望採納~ 祝你學習進步~ 有問題再問哦~ o(∩_∩)o

9樓:匿名使用者

d %d 十進位制 就是13

%o 八進位制 就是015

%x 十六進位制 就是 0xd

但是列印 不會列印0,0x字首

填什麼,是怎麼算出來的

笑傲江湖獨求敗 1.這道題的完整序列數分別是 4 9 1 4 3 40 在備選答案中有一個數是正確的,是 121 它的規律是 這一序列數字除3以後得到的餘數呈現週期排列 排列週期是 1,0 1,1 0 1,1,0 1等 由於原題是選擇題,所以只有121除3後餘數符合這個週期,即餘數為 1 倘若不是選...

綜合稅率11 5怎麼算出來的

營業稅5 文化事業建設費3 城建稅5 教育費附加3 地方教育費附加2 這幾個部分的綜合稅率 5 5 3 5 3 2 5.65 所得稅25 是按稅前利潤口徑計算的稅率,要換算成按營業收入計算口徑,所得稅的綜合稅率 25 營業利潤率。從所說的綜合稅率是11.5 所得稅的綜合稅率 11.5 5.65 5....

1 6的西格瑪是怎麼算出來的

河傳楊穎 一 6個西格瑪 3.4失誤 百萬機會 卓越的管理,強大的競爭力和忠誠的客戶。二 5個西格瑪 230失誤 百萬機會 優秀的管理 很強的競爭力和比較忠誠的客戶。三 4個西格瑪 6,210失誤 百萬機會 意味著較好的管理和運營能力,滿意的客戶。四 3個西格瑪 66,800失誤 百萬機會 意味著平...