無符號數字,八進位制數字輸出問題

2021-03-04 06:53:26 字數 1080 閱讀 4040

1樓:匿名使用者

-1在記憶體中的二進位制形式是11111111 11111111.(為什麼是這樣請查詢"補碼"相關知識)

%d是以有符號形式輸出,所以是-1

%u是以無符號形式輸出,即將最高位的1看成是32768,而不是表示負數的符號位,所以這個數實際上是32768+16384+8192+4096+2048+1024+512+256+128+64+32+16+8+4+2+1=65535

%o是輸出二進位制對應的八進位制形式,16個1的話,從右往左,每3位轉成一個八進位制數,因此右邊15個1轉成了5個八進位制的7,第16位的1直接轉成1

2樓:匿名使用者

m為無符號整型,在計算機中以補碼錶示,按照你的情況,應該是int為16位的編譯器。-1的補碼為全1,16個1不帶符號位恰為65535,二進位制轉化為8進位制則是每三位二進位制數對應一位8進位制數,第0-14位15個1對應後面5個7(每3個1對應7),最高位為1對應八進位制最高位1

c語言中輸出16進位制數為什麼只是用無符號形式呢?

3樓:abc小鴨

不是隻用無符號形式的。

c中以8和16進位制輸出的整數,都是將記憶體中的各位的值全部按8/16進位制輸出,包括符號位。

可以試驗一下,1和-1的16進位制輸出結果是不一樣。

4樓:匿名使用者

樓主說的不錯,本來也沒注意這個,謝謝提醒了,我看了下書:c中以8和16進位制輸出的整數,都是將記憶體中的各位的值全部按8/16進位制輸出,包括符號位,所以上面那兄弟說的6和-6確實不一樣,不信寫個程式試驗下吧

5樓:匿名使用者

誰告訴你只能是無符號的啊?

你用i=16和i=-16輸出結果會是一樣的嘛?

編寫程式輸入一個正整數分別按十進位制,八進位制和十六進位制輸出該數

6樓:匿名使用者

輸出形式選擇%d即輸出十進位制數,%o即輸出八進位制數,%x即輸出十六進位制數,具體如下:

7樓:匿名使用者

#include

main()

以下合法的八進位制數是,屬於合法的八進位制數的是A40B61C5FD

b 八進位制數裡沒有8,7完了就要進位的。c 八進位制裡沒有小數位的。d 八進位制裡沒有o的。b不能有8,c不能有小數,d不能含有英文字母o 屬於合法的八進位制數的是 a 40 b 61 c 5f d 88 a和b都是 c錯在f 8進位制沒有f d錯在8 8進位制不帶數字8 是0 7的8位數字 a和...

八進位制數25363怎樣轉換成二進位制數

每1位8進位制的數等同於3位2進製得數,他們之間的對應關係如下 0000 1 001 2 010 3 011 4 100 5 101 6 110 7 111 所以你的 2 5 3 6 3 010101011110011 最前面那個0可以不要了 八進位制數154轉換成二進位制數具體點?154 o 11...

十進位制1000轉化為二進位制數,八進位制以及十六進位制數分別是多少

十進位制1000轉化為二進位制數是 1111101000,八進位制 1750,十六進位制數 3e8。分析及過程 1000化為二進位制 1000 內2 500 容 0 500 2 250 0 250 2 125 0 125 2 62 1 62 2 31 0 31 2 15 1 15 2 7 1 7 2...