1樓:匿名使用者
%d是輸出有符號的整數.輸出無符號整數用%u.
int的大小是看計算機位數和編譯器的.16位的unsigned int最大是65535,不過現在大部分是32位編譯器和計算機,unsigned int最大就是2的32次方減1,4294967295.
2樓:匿名使用者
誰告訴你int資料在任何計算機上都是16位?你可以指著他罵了.
int的位數跟編譯器有關係,比如tc上是16位,但是vc上是32位.
3樓:匿名使用者
65535是16位的,
現在一般計算機,在vc上都是32位的,數值遠比這個大。無符號整型的數值能達到42億。
4樓:匿名使用者
要看你的編譯器。如果用16位就算65535
如果32位,就等於16位的long型
或者64,就等於longlong型
c語言無符號整形和無符號短整型顯示負數結果為什麼不一樣?
5樓:匿名使用者
因為printf裡用%d來輸出某個變數時,程式會預設該變數為int型。如果該變數
是內整型,容但不是int,而是char或者short,程式會先把它轉換成int型,再傳給printf.
所以用unsigned int a=-12時,沒有上面所說的轉換步驟,%d當成有符號整數,輸出是-12,沒問題。
unsigned short a=-12時, 注意這時候a是16位,在記憶體中是11111111 11110100,轉換成int型會變成32位,程式在它的左邊會新增16個0,變成00000000 00000000 11111111 11110100,這時候符號位是0了,當然變成正數了。
6樓:匿名使用者
顧名思義,無bai符號是du沒有符號的,只能zhi
儲存非負數。所以顯dao示結果是不一版樣的。
在計算權機內部,負數與非負數沒有區分,只是負數用補碼形式儲存,補碼是原碼按位取反再加1得到的。對於負數來說首位一定是1,假如作為正數,將是一個很大的數,也就變成了另一個數了。
7樓:匿名使用者
無符號整型和無符號短整型所佔的位元組數是不一樣的
8樓:匿名使用者
你把它寫成2進位制就知道了!
如圖:c語言程式中無符號數a的值是負數,為什麼作整形輸出時的結果是64870?
9樓:匿名使用者
負數在記憶體中是以補碼的形式儲存的,
即 -666
原碼:1000 0010 1001 1010
反碼:1111 1101 0110 0101 (符號位不變,其它位取反)
補碼:1111 1101 0110 0110 (反碼+1)
即,實際記憶體中的資料為0b1111 1101 0110 0110=64870
而a為unsigned short int,所以反饋的應該就是64870正數。
10樓:匿名使用者
-666 在記憶體中的是以補碼的形式存在的
-666的原碼是
1000 0010 1001 1010
補碼是 原碼除符號位(第1位)外各位取反+1,所以是1111 1101 0110 0110
由於a是無符號數,所以第一位的1不在表示負數,1111 1101 0110 0110 的十進位制數就是64870
C無符號長整型1什麼意思,C語言中無符號長整型數的輸入輸出格式是什麼
if ulcrc 1 判斷ulcrc二進位制個位是否抄為1,如果ulcrc 1101,則襲ulcrc 0001 0001,自然bai 為真,再簡單的說,du就是判斷是否為奇數zhiulcrc ulcrc 1 crc32 polynomial ulcrc 1右移一位不賦dao值,即返回值是ulcrc右...
為什麼輸出的結果是,為什麼輸出的第一個結果是1?
雙重迴圈語句。第一次運算 用 i 的 初始值1 和 j 的 初始值 1,i j 輸出為 1。第二次運內算,i 等於 容 1,j 增 1 等於 2。第三次運算,i 等於 1,j 增 1 等於 3。第四次運算,i 等於 1,j 增 1 等於 4。第五次運算,i 等於 1,j 增 1 等於 5。第六次運算...
請問有符號短整型最小值的補碼(儲存碼)為什麼是
其次你問的真是一塌糊塗。接下來開始回答 首先我們假設int型別是四位 因為寫那麼多的0和1麻煩,只寫四個比較方便 以前的時候int型別的規定,用第一個位表示正負號,也就是原碼的表示方法,0001表示1,1001表示 1。如下表 現在可以看出,int的最小值應該為1111也就是 7,推廣到十六位,in...