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等多種平台資料庫之間的方便的資料轉換工具,它具有方便 強大的瀏覽 編輯 維護介面,通過一套軟體操作多種資料庫實為現實,學習起來更是簡...