C语言进制转换时自动扩展位?(原码、反码、补码)(打印%o、%x时会自动扩展到32位【负数先得到其十进制真实数值,再根据其真实数值得到八进制、十进制补码】)
生活随笔
收集整理的這篇文章主要介紹了
C语言进制转换时自动扩展位?(原码、反码、补码)(打印%o、%x时会自动扩展到32位【负数先得到其十进制真实数值,再根据其真实数值得到八进制、十进制补码】)
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
文章目錄
- 解析(char a = 0x81)
- 注意
- 解析(int b = 0x81)
- 解析(char c = -12)
懵逼😵
解析(char a = 0x81)
(打印8進(jìn)制補(bǔ)碼的時候,是通過a的十六進(jìn)制補(bǔ)碼,換算成十進(jìn)制原碼【-127】后,再倒推回去計(jì)算8進(jìn)制補(bǔ)碼,而不是通過十六進(jìn)制補(bǔ)碼直接得到的!)
char a 的十六進(jìn)制補(bǔ)碼:8 1 1000 0001(最高位是1,說明是負(fù)數(shù)) 八進(jìn)制補(bǔ)碼: 1111 1111 1111 1111 1111 1111 1000 0001(八進(jìn)制補(bǔ)碼)--> 11 111 111 111 111 111 111 111 110 000 001(37777777601) 反碼: 1000 0000 (1111 1111 1111 1111 1111 1111 1000 0000 倒回去↑) 原碼: 1111 1111 (1000 0000 0000 0000 0000 0000 0111 1111 倒回去↑) 原碼十進(jìn)制表示: -127 (倒回去↑)注意
正數(shù)的原碼補(bǔ)碼反碼相同
打印%o,八進(jìn)制,估計(jì)也是以4個字節(jié),32位大小打印
解析(int b = 0x81)
int b 的十六進(jìn)制補(bǔ)碼:8 1 0000 0000 0000 0000 0000 0000 1000 0001八進(jìn)制補(bǔ)碼(由十六進(jìn)制補(bǔ)碼直接轉(zhuǎn)換): 0000 0000 0000 0000 0000 0000 1000 0001 00 000 000 000 000 000 000 000 010 000 0012 0 1十進(jìn)制原碼(因?yàn)樽罡呶粸?span id="ze8trgl8bvbq" class="token number">0,是正數(shù),所以原碼等于補(bǔ)碼): 0000 0000 0000 0000 0000 0000 1000 0001 129解析(char c = -12)
十進(jìn)制表示: -12 原碼: 1000 0000 0000 0000 0000 0000 0000 1100 反碼: 1111 1111 1111 1111 1111 1111 1111 0011 補(bǔ)碼: 1111 1111 1111 1111 1111 1111 1111 010011 111 111 111 111 111 111 111 111 110 100 八進(jìn)制表示: 3 7 7 7 7 7 7 7 7 6 4 十六進(jìn)制表示: F F F F F F F 4總結(jié)
以上是生活随笔為你收集整理的C语言进制转换时自动扩展位?(原码、反码、补码)(打印%o、%x时会自动扩展到32位【负数先得到其十进制真实数值,再根据其真实数值得到八进制、十进制补码】)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: c语言中,为什么%o、%d、%x输出的总
- 下一篇: visual studio快捷键 Qt