日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

15W4K58S4 實驗2:格式化輸出

 360tsgyd 2018-06-25

實驗筆記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、hl完全相同。

%p是指針變量的格式輸出符。

例如:
      
char d=10;        
       printf("char d=%d\n",d);      //
將顯示char d=2560
因為變量d只占用一個字節(jié)8位,而不加寬度標識符缺省認為是16位,所以顯示會出錯
?
?     
 printf("char d=%bd\n",d);    //將顯示char d=10
?
加了寬度標識符后,顯示正確

   printf("char d=%d\n",(int)d);  //將顯示char d=10
?
或者,將char型強制轉換為int型再用%d顯示,也能得到正確的結果   
?
?
?實驗效果

 
?

在計算機內存中,所有的負數(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
?
?
? 實驗程序源碼下載地址:https://pan.baidu.com/s/1-OLy8nojz6RC_6PNOx4DuQ
?

 

 

    本站是提供個人知識管理的網(wǎng)絡存儲空間,所有內容均由用戶發(fā)布,不代表本站觀點。請注意甄別內容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權內容,請點擊一鍵舉報。
    轉藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多