C 列印為啥會出現0xffffff的情況

2021-10-22 16:28:51 字數 602 閱讀 2201

char maotian;

cout但如果maotian=0xff以下的沒什麼問題,比如0x4a還是會列印出4a,如果是0xff,將會把int的32位全補1最後成0xfffffff

問題原因如下:新增鏈結描述

就是為了就是能夠進行減法的運算。計算機只能進行加法運算

如 7 - 7 在計算機中演變為7 + (-7):0x00001001 + 0x00011001 = 0x00100010 (以int8為準)並不是0

所以需要-7在計算機中便是以補碼形式存在

另外對於有符號和無符號的加減是否不同,答:都是一樣的,做減法時,一律轉成有符號數,如果大於int_max的就一律轉成long long

在回到為啥0xff最後會輸出0xffffffff

因為計算機都是用補碼儲存的,當輸入0xff後。計算機會將0xff轉換為補碼0x11,char轉換為int時,因為從8位變為32位所以1提到最前位,然後計算機在轉換為補碼給人看,故0x10000001補碼為0xffffffff

陣列越界會出現什麼 為什麼會出現刺繡?

為什麼會出現刺繡,可能各個地方的繡種不同,答案也不盡相同。查翻資料,今天談談地處江南地區的 蘇繡 是為何出現。蘇繡的出現離不開四個字 斷髮文身 斷髮文身的古人 蘇繡至今已有2000餘年的歷史,傳說 於仲雍的孫女 女紅 首製繡衣。古代周太王古公亶父的兒子太伯 仲雍來到今江南蘇州一帶建立了吳國,當地人有...

為什麼會出現死鎖

今天在閱讀 我在思考乙個 如何可以抵擋得住大的迸發量,我先羅列我應該會設計的方案,然後再分析其中實現應該注意的地方 首先如果資料量很大的話,我們是要分散請求的,也就是需要伺服器來聯合作戰,當然這裡我們就需要有乙個好的輪詢的演算法,不然會出現資料無法保持一致而導致程式中隱藏bug,所以說,考慮的方面不...

revert merge會出現的問題

比如當我們git revert的時候,git revert git會抱怨 is a merge but no m option was given 這是因為你revert的那個commit是乙個merge commit,它有兩個parent,git不知道base是選哪個parent,就沒法diff,...