C語言八進位制十六進位制真值問題

2023-01-18 17:35:06 字數 2136 閱讀 1771

1樓:篤俠

關於八進位制和十六進位制的正負性,有如下幾種情況:

1. 如果直接使用,都認為是正值,比如

printf("%d",2*0x8008);

輸出 65552

2. 如果將其賦值給有符號變數,則(化為二進位制後)最高位為1表示負數,為0表示正。比如

short int y=0x8008;

printf("%d",y);

輸出 -32760

3. 如果將其賦值給無符號變數,則為正值。比如unsigned short int x=0xffff;

printf("%d",x);

輸出 65535

4. 如果在表示式中參與運算,並將運算結果賦值給有符號變數,與情況2相同。比如

short int y=2*0x4008;

printf("%d %d",2*0x4008,y);

輸出 32784 -32752

2樓:_冰靈

01234,0123456是八進位制,0x1234,0x8008是十六進位制,八進位制和十六進位制都沒有負值

3樓:匿名使用者

數值有正負之分,計算機就用一個數的最高位存放符號(0為正,1為負).

因此,八進位制01234轉化為二進位制1010011100 最高位為1,故為負

十六進位制0x1234轉化二進位制為0001 0010 0011 0100 最高位0,故為正

十六進位制0x8008轉化二進位制為1000 0000 0000 1000 最高位為1 故為負

組合語言,c語言問題,請問真值怎麼求出來的。

4樓:匿名使用者

第一位符號位1表示負,所以是負數;

1100111 (二進位制)= 2^6+2^5+2^2+2^1+2^0 = 103(十進位制)

所以是 -103

為什麼c語言中0177777表示真值-1

5樓:匿名使用者

0177777是八進位制數,轉換成二進位制就是1111111111111111,int為兩個位元組也就是十六位,該二進位制為補碼,轉換成真值就是-1

c語言中,0177777代表的真值是—1,為什麼呀?

6樓:

這是八進位制常數,因為是0打頭的。這個數的二進位制是16個1,在16位int平臺下就是十進位制-1的補碼,而在32位int平臺下是65535。

c語言程式的float變數,其內部編碼是0xbd600000,求實數真值是多少

在c語言中017777代表的真值為何是-1

7樓:匿名使用者

你少寫了一個7,應當是0177777

在c中,有規定,以0開頭的數為8進位制整數

你看到的書是傳統教材,當時的int資料佔兩個位元組,一個位元組8位,所以,0177777所對應的二進位制數就是16個1。

計算機中,儲存整數採用的是補碼,對於負數,補碼就是原碼的反碼+1。所以,1111111111111111轉換為原碼輸出就是-1,過程:

1111111111111111-1 = 1111111111111110 反碼

1111111111111110 對應的原碼為:1000000000000001 (-1) 首位為符號,1表示負,0表示正,其餘為數值。

在c語言中017777代表的真值為何是-1

8樓:禮芳苓曾塵

你少寫了一個7,應當是0177777

在c中,有規定,以0開頭的數為8進位制整數

你看到的書是傳統教材,當時的int資料佔兩個位元組,一個位元組8位,所以,0177777所對應的二進位制數就是16個1。

計算機中,儲存整數採用的是補碼,對於負數,補碼就是原碼的反碼+1。所以,1111111111111111轉換為原碼輸出就是-1,過程:

1111111111111111-1

=1111111111111110

反碼1111111111111110

對應的原碼為:1000000000000001(-1)

首位為符號,1表示負,0表示正,其餘為數值。

二進位制轉換十進位制,八進位制,十六進位制

在數制中,還有一個規則,這就是,n進位制必須是逢n進一。對於多位數,處在某一位上的 l 所表示的數值的大小,稱為該位的位權。例如十進位制第2位的位權為10,第3位的位權為100 而二進位制第2位的位權為2,第3位的位權為4,對於 n進位制數,整數部分第 i位的位權為ni 1,而小數部分第j位的位權為...

C中如何完成十六進位制到八進位制的轉換

計算機內都bai是2進位制,輸入輸出時才體du現出 其它進zhi制。include include using namespace std main 順便說一下 c 語言輸入輸出 x 格式 是 16 進位制,o 是 8 進位制。你是說輸出麼,還是從copy16進位制的數字字串轉換成8進位制的字串?如...

二進位制 八進位制 以及十六進位制有什麼區別

計算機中常用的十六進位制是逢16進1的記數制,採用數字0 9和字母a f共16個記數符號,若符號與十進位制的數的對應關係 計算機中常用的進位制 二進位制 八進位制 十六進位制 進位制 數 字 進位方法 十進位制 0 1 2 3 4 5 6 7 8 9 逢十進一 二進位制 0 1 逢二進一 八進位制 ...