C語言十六進製制反轉實在不找不出錯誤,高分求神仙

時間 2023-03-22 19:30:06

1樓:銀霜傲雪

是想把0x43的結果變為34對吧。可是你這一開始賦值有就問題,用char存的話乙個char是一位元組,也就是最大能存125,0x83是131就已經越界變為負值了,後面肯定要出錯的。還有ccode這個函式完全是沒有用的,我不知道你想幹嘛。

這些問題都改了就可以了。

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

2樓:篤俠

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

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

3樓:_冰靈

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

4樓:匿名使用者

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

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

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

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

問個c語言八進位制和十六進製制問題

c十六進製制加法,C 十六進製制求和?

這取決於int的字長,如果32位int,int 型別的指標 1,它的位址加4,如果是64位的int,int 型別 1,它所在位址就加8,題目中tt為int 型別,tt 0x1300 4,就相當於tt所在的位址 0x1300 4 4 故此,輸出aa既aa指標的位址就是5401b int tt int ...

c語言 二進位制轉十六進位制,C語言 二進位制轉十六進位制

看看這個行不行?希望對你有幫助 include stdafx.h include stdio.h include string.h include conio.h include stdlib.h void convert char input,char output for ii nx ii9 0...

用C 編寫「輸出十進位制 八進位制 十六進製制顯示的資料

int i for i 0 i 15 i cout cout for i 1 i 15 i cout cout for i 1 i 15 i cout include void main int i char a a cout 十進位制 for i 0 i 16 i cout cout n八進位制 ...