c语言char类型溢出,C语言中数据溢出的问题---以char类型为例
一、首先char類型的取值范圍是-128~127,對于127的二進制表示是:01111111,-127的二進制表示是:11111111,那么問題來了:-128是怎么來的?1、當charch=128或c.
一、首先char類型的取值范圍是-128~127,對于127的二進制表示是:0111?1111,
-127的二進制表示是:1111?1111,那么問題來了:-128是怎么來的?
1、當?char?ch?=?128?或?ch?=?-0時,則二進制為?1000?0000
計算機內存中都是按負數來處理的
當求補碼的時候會溢出,則需要先進行位擴展,變為?1?1000?0000
然后,反碼:1?0111?1111
補碼:1?1000?0000??(?-128?)
由于char?為8個字節,截取后八位,變為?1000?0000?,則128?或?-0在內存中為?-128
2、當?char?ch?=?-129時,?則二進制為?1?1000?0001
反碼:1?0111?1110
補碼:1?0111?1111
截取后八位,變為?0111?1111?(?127);
例如:char?ch?=?2000;最終計算機所讀到的數是多少呢?
2000的二進制表示是:111 1101 0000,,截取八位為:1101 0000,最高位是符號位,計算機認為它是一個負數,而負數是以補碼的方式存儲的,所以,通過取反、加1后變為:1011 0000,這樣ch = -48。
總結
以上是生活随笔為你收集整理的c语言char类型溢出,C语言中数据溢出的问题---以char类型为例的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 大话西游手游安卓和苹果互通吗
- 下一篇: AMD RX 6000 显卡最新驱动可提