关于整型数据符号位扩展的问题
????? 個人認為這個符號擴展的規律是極其不負責任的說法,盡管這個規律不管在什么境況下都是正確的。舉個關于符號擴展的例子:
int a;
char b;
b = -1;
a = b;
這時,在賦值語句中,就要將 char 型b變量隱性轉化成 int 型的數據,就用到符號擴展的知識。我們先看看變量b在內存中的二進制的表示值0xFF, 經過符號擴展后就會變位0xFFFF。我們看到保持低8位不變,將符號擴展位補1。也就驗證了符號擴展規律的正確性,但我們不能只看到這個規律的正確性就算完事,還要考慮這種變換背后的規律以及這種變化最本質的東西。
????? 我們看到char型b變量擴展后的變為0xFFFF,而0xFFFF又是int型的變量為-1在內存中的二進制表示方式。不是char型b變量擴展后只有將符號位用1填充才能變為-1,而是-1的int型數據在內存中的二進制存儲方式為0xFFFF,這才是問題的關鍵!也就是char型b變量要擴展位int型數據,本質上就是用int型類型的數據來表示char型的值。
?????? 因此無論遇到什么類型的整型數據擴展問題,就是用另一種類型的數據來表示原來的數據。
?????? 抓住了事物的本質,也就知道了以上關于符號擴展規律的由來,也就造就了這么個通用的規律。但個人認為這個規律只是將關于符號擴展的現象的規律說明了一下,并沒有說明符號擴展的最本質的東西。只是說明了現象而沒抓住本質。
《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀總結
以上是生活随笔為你收集整理的关于整型数据符号位扩展的问题的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 如何在O(1)的时间里删除单链表的结点
- 下一篇: c++常见面试题30道