實驗筆記2 電路圖如實驗1 使用printf函數(shù)需要頭文件#include <stdio.h> printf函數(shù)可以輸出格式化字符,而且可以將要顯示的數(shù)據(jù)發(fā)往串行口,這樣,使用串口調試工具就能觀察單片機傳來的數(shù)據(jù)了。 printf函數(shù)除了標準C的格式控制字符外還擴展出了b、h、l來對字符寬度進行限制。 其中:b表示8位,h表示16位(默認值,可省略標識符),l表示32位。 如果沒有寬度標識符,除整形數(shù)據(jù)(int 和unsigned int 型)外,其余類型都會出現(xiàn)錯誤。 如果不用寬度標示符,也可以使用強制類型轉換的方法,將char 或unsigned char 的變量強制轉換成int 或unsigned int,最終實現(xiàn)的效果與使用寬度標識符b、h、l完全相同。 %p是指針變量的格式輸出符。
例如:
printf("char d=%d\n",(int)d); //將顯示char d=10
在計算機內存中,所有的負數(shù)都是以補碼的形式存放的, 例如: char a=-1; char b=3;
-1的原碼是 1000 0001 //最高位是符號位,0表示正,1表示負 -1的反碼是 1111 1110 //最高位不變,其它各位求反 -1的補碼是 1111 1111 //最高位不變,在反碼的基礎上加1
那么a+b就是-1+3=2,它在內存中的計算是: 1111 1111 //-1 0000 0011 //3 +--------------- 0000 0010 //2 符號位為正,正數(shù)的補碼就是它本身,所以結果為+2
char a=-1; char b=-2;
-1的原碼是 1000 0001 //最高位是符號位,0表示正,1表示負 -1的反碼是 1111 1110 //最高位不變,其它各位求反 -1的補碼是 1111 1111 //最高位不變,在反碼的基礎上加1
-2的原碼是 1000 0010 -2的反碼是 1111 1101 -2的補碼是 1111 1110 (-1)+(-2)在內存中的計算 1111 1111 //-1 1111 1110 //-2 +---------------- 1111 1101 //最高位為1表明這是一個負數(shù),是補碼形式,要想得到原碼,需要再求一次補碼,即: 【【原碼】補】補=原碼 對結果再求一次補碼可以得到原碼 1111 1101 //結果的補碼 1000 0010 //最高位不變,其它位求反 1000 0011 //在反碼的基礎上加1,得到結果的原碼=-3
|
|