tft每日頭條

 > 生活

 > 怎麼理解c語言中的無符号整數

怎麼理解c語言中的無符号整數

生活 更新时间:2024-09-15 15:35:11

我們學習了有符号和無符号數,可以知道,在一個字節中存放了8位的數據,例如1111 1111這樣的8位二進制數據,就有:

(1) 如果把這8位二進制數據當作“有符号”數看待,那麼,最高位是符号位,其餘7位是數值位;

(2) 如果把這8位二進制數據當作“無符号”數看待,那麼,沒有符号位,8位數據都是數值位;

可以看到,同一個二進制數據,當中有符号和無符号數看待的時候,它們表示的結果是不一樣的。

在C語言中,提供了unsigned這個關鍵字來表示無符号數。例如:

unsigned char x;

就是定義了x這個變量是無符号類型,所以它表示的數值沒有符号位。例如存放1111 1111數據,因為無符号數沒有符号位,全部8位數據是數值位,所以表示255這個數值。表示的最小數據就是0000 0000,既0 數值。如下是一個測試的例子。

怎麼理解c語言中的無符号整數(C語言的無符号類型)1

程序運行的結果如下:

怎麼理解c語言中的無符号整數(C語言的無符号類型)2

可以看到,對于255這個整數,其二進制表示為1111 1111,那麼,就有:

(1) 把255賦給a1變量,當作有符号數看待,所以,符号位是1,表示負數,數值位是111 1111,那麼,要表示為十進制,就是數值位取反,得到000 0000,然後,加1,得到000 0001,所以,二進制1111 1111表示為有符号數是-1。所以與輸出的a1變量值是-1一緻。

(2) 把255賦給a2變量,當作無符号數看待,所以,8位二進制數據1111 1111全部存儲到a2變量中當作數值位,所以,a2變量輸出是255。

對于a3變量的操作,我們是把一個負數賦值給無符号數a3,那麼,由于-1這個數值其在1個字節中表示的二進制數為1111 1111,所以,就相當于把1111 1111數值賦給a3變量,那麼,a3變量中就有1111 1111這樣的數據,與a2變量存儲的數據是一樣的。所以,輸出的數值與a2變量一樣。

對于char、short、int、long 類型,可以使用unsigned關鍵字來修飾,定義無符号類型的數據。但是,對于 float、double類型的數據,由于是浮點數,所以,不可以使用unsigned關鍵字來修飾。

,

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

查看全部

相关生活资讯推荐

热门生活资讯推荐

网友关注

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