tft每日頭條

 > 生活

 > 數據類型中char是什麼型

數據類型中char是什麼型

生活 更新时间:2025-01-27 02:23:49

數據類型中char是什麼型?本文針對x86架構體系而言----------------------------------------,下面我們就來說一說關于數據類型中char是什麼型?我們一起去了解并探讨一下這個問題吧!

數據類型中char是什麼型(為什麼char類型的數值範圍是-128)1

數據類型中char是什麼型

本文針對x86架構體系而言

----------------------------------------

我們知道在c語言中,char類型是8位二進制的有符号類型,最高位為符号位,剩下的7位表示數值,而7位能表示的最大值為127,所以第一直覺是char類型的範圍應該是-127~ 127。但如果是-127~ 127的話,那0就有兩種表示了:

假如用源碼表示0的話,二進制就是:0000 0000 和1000 0000, 也就是有正零,負零,有點詫異,還有點浪費空間...

那能不能用其中的一個0來表示-128呢?當然可以!而且必須用二進制1000 0000來表示(0000 0000就表示0了,天時地利人和)

這就有了-128的一席之地了:

0000 0001 1 0000 0000 0 1000 0000 -128 1000 0001 -1 1000 0002 -2

但是看看這個坑占的,簡直太突兀了,還是不要-128算了!而且如果-1>-2,那麼他們映射的二進制1000 0001 也應該自然地大于 1000 0002,這樣比較才是效率最高的,而不需要更高一層的定義。

别急别急,如果用補碼,那正負的範圍值就如絲般順滑了(論補碼的妙哉,哈哈):

注:有符号整數X,如果值大于等于0,則補碼就是原碼,如果小于0,則為2^n X

0000 0001 1 0000 0000 0 1000 0000 -128 1000 0001 -127 ......... 1111 1111 -1

重新排列一下,就更符合自覺,更直觀了,而且我們發現有符号無符号整數的二進制是一樣的,關鍵就在于上層語言怎麼解釋了,比如1111 1111可以是255,也可以是-1。所以有無符号,純粹就是上層語言怎麼定義了。

0000 0000 0 0000 0001 1 ... 0111 1111 127 1000 0000 -128 1000 0001 -127 .... 1111 1111 -1

其他short, int,long long一樣一樣的,公式為:-2^(n-1) ~ 2^(n-1) - 1

,

更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!

查看全部

相关生活资讯推荐

热门生活资讯推荐

网友关注

Copyright 2023-2025 - www.tftnews.com All Rights Reserved