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
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失誤 百萬機會 意味著平...