資料轉換位元組擴充套件 char c 128

2021-09-24 00:04:32 字數 930 閱讀 5999

char c=128;

printf("%d",c);

【將c語言**彙編,可以看到128轉換成了-128】

c語言char型別的表示範圍-128~127。

128:補碼10000000b 

裝載到暫存器exa中:屬於有符號數擴充套件,按照符號位填充高位位元組。

由於 128最高為是1,為負數,擴充套件為int的-128為11111111 111111 111111 1000000,即0xffffff80。

使用%d輸出-128;        使用%u輸出4294967168。

數字常量預設是有符號資料,無符號資料後面加u、『u』

資料擴充套件規則:

1、有符號數擴充套件:按符號位填充擴充套件的高位位元組

2、無符號數擴充套件:擴充套件高位位元組填充0

3、資料縮短:高位全部為0或者全部為1的時候,直接截斷。

4、無符號數和有符號數之間的轉換,長度相同時:資料位不會變化,只是編譯器解釋改變。長度不同時:先進行長度擴充套件,在進行型別轉換。

5、有符號數和無符號數一起運算,都轉化為無符號數。

unsigned char a=255;

unsigned int b=~a;

int c=~a;

char d= 128;

對應的組合語言:

movb$-1, -1(%rpb)

movzbl   -1(%rpb),%eax

notl     %eax

movl     %eax, -8(%rpb)

mozbl    $-1(%rpb), %eax

notl     %eax

movl     %eax, -12(%rpb)

movb$-128, -2(%rpb)

浮點數與位元組資料的轉換

做專案時,碰到乙個問題 如何將32位的浮點數轉化成4個位元組資料進行傳送?下面給出演算法 function ftoc float a decription 浮點數轉化成四個位元組 input output void ftoc float a 例如12.5 0x41 48 00 00 轉換完之後,e ...

浮點數與位元組資料的轉換

摘自 做專案時,碰到乙個問題 如何將32位的浮點數轉化成4個位元組資料進行傳送?下面給出演算法 function ftoc float a decription 浮點數轉化成四個位元組 input output void ftoc float a 例如12.5 0x41 48 00 00 轉換完之後...

新誠軟資料轉換器cs v12

新誠軟資料轉換器 原天星海沙資料轉換器 為oracle sql server access db2 interbase sql anywhere dbase mysql等多種平台資料庫之間的方便的資料轉換工具,它具有方便 強大的瀏覽 編輯 維護介面,通過一套軟體操作多種資料庫實為現實,學習起來更是簡...