c語言中的無符號字節,C語言之有符號數和無符號數

我們知道,在C語言中存在無符號數和有符號數(一些高級語言如Java里面是沒有無符號數的),但是對于計算機而言,其本身并不區別有符號數和無符號數,因為在計算機里面都是0或者1,但是在我們的實際使用中有時候需要使用有符號數來表示一個整數,因此我們規定,當最高位為1的時,表示為負數,最高位為0時,表示為正數。

1:有符號數和無符號數在數值上的區別。

有符號數的最高位用來表示符號,所以在最大的數值上,有符號數的最大值小于無符號數。以一個字節為例:

有符號數的取值范圍為:-128 — 0 — 127

無符號數的取值范圍為:0 — 255

2:正數和負數的轉換

轉換關系為:負數(正數) = 正數(負數)的補碼 + 1;

例如:

5? = 0000 0101

-5 = 1111 1011

實際的計算:

最大值 - 當前值 +1;

0xFF -5 +1 = -5(1111 1011)

0xFF -(-5) +1 = 5(0000 0101)

3:正負數在計算機中的存儲

在計算機中,并不存在所謂正負,具體看下面的代碼

int main(void)

{

int x = -1;

int i = 0;

unsigned int ux = (unsigned)x;

for(i = 0;i<32;i++)

{

ux = ux >> i;

if((ux & 0x01) == 0)

printf("%d = 1\r\n",i);

}

ux = (unsigned) x;

printf("ux = %d \n",ux);

printf("ux = %u \n",ux);

}

運行結果為:

111111111(32個1)

ux = -1

ux = 4294967295

原因是,當我們將 -1 通過強制類型轉換賦值給ux時,此時ux變量所對應的地址,所存放的值是-1,也就是0xFFFFFFFF,也就是說,從存儲的角度上講,-1和4294967295在計算機的存儲值都是0xFFFFFFFF,關鍵是你按怎樣的方式去解析,

ux = -1;此時我們是按%d也就是有符號×××的方式去解析這個存儲空間所對應的值,所以得到的解析結果是-1;

ux = 4294967295,此時我們是按%u也就是無符號×××的方式去解析這個存儲空間的值,所以得到的最高位就是數值位,而不是符號位。

解析過程如下,這里假設int類型為一個字節(4個字節也是一樣的原理,只是數值更大而已)權255-1

位值位值

11111

21212

41414

81818

16116116

32132132

64164164

12811281-128

所以

-1 = 1+2+4+8+16+32+64+(-128)

255 = 1+2+4+8+16+32+64+128

綜上所述,計算機中的存儲方式并不區分正負,關鍵在于程序員用什么方式去解析這塊存儲空間(地址)的值。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/392117.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/392117.shtml
英文地址,請注明出處:http://en.pswp.cn/news/392117.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

8種排序算法比較

8種排序算法&#xff0c;各算法名稱見下表或見源碼。運行程序時&#xff0c;將需要你輸入一數值&#xff0c;以確定對多少隨機數進行排序。然后將會顯示各排序算法的耗時。并且你可選擇時否進行正序和反序測試。 由于水平有限&#xff0c;可能存在一些錯誤&#xff0c;還請各位…

兩個問題,關于XP進程優化及SVSP虛擬存儲平臺

這兩個問題讓我有點頭痛&#xff0c;是Boss這陣子布置給我的&#xff0c;都一段時間了&#xff0c;我還是沒找出合適的解決方案來答復Boss.第一個問題是&#xff1a;查查X200或X61中的進程&#xff0c;看哪些是可以不要的&#xff0c;停掉&#xff0c;但又不影響用戶使用。&…

數據挖掘—樸素貝葉斯分類算法(Java實現)

算法描述 &#xff08;1&#xff09;掃描訓練樣本數據集&#xff0c;分別統計訓練集中類別 Ci 的個數 Di 和屬于類別Ci 的樣本中屬性Ak取值Xk為 Dik 的實例樣本個數&#xff0c;構成統計表&#xff1b; &#xff08;2&#xff09;計算先驗概率和條件概率&#xff0c;構成概率表…

net core 獲取網站目錄

AppContext.BaseDirectory 獲取項目的根目錄轉載于:https://www.cnblogs.com/zxs-onestar/p/7147265.html

泰晤士報下載_《泰晤士報》和《星期日泰晤士報》新聞編輯室中具有指標的冒險活動-第1部分:問題

泰晤士報下載TLDR: Designing metrics that help you make better decisions is hard. In The Times and The Sunday Times newsrooms, we have spent a lot of time trying to tackle three particular problems.TLDR &#xff1a;設計度量標準以幫助您做出更好的決策非常困難…

速度一半永遠追不上_您將永遠不會知道自己應該怎么做的一半-沒關系。

速度一半永遠追不上by Ken Gilb肯吉爾伯(Ken Gilb) 您將永遠不會知道自己應該怎么做的一半-沒關系。 (You will never know half of what you think you should — and that’s ok.) Impostor syndrome is a real thing in software development. After 20 years in the indus…

c語言自學門檻,初學C語言的人最常問的幾個問題

初學C語言的人最常問的幾個問題C語言是一門通用計算機編程語言&#xff0c;應用廣泛。對于新手來說學習C語言并不是那么容易&#xff0c;下面是C語言初學者最常問的幾個問題&#xff0c;歡迎閱讀!1.多久能學會編程?這是一個沒有答案的問題。每個人投入的時間、學習效率和基礎都…

背景消除的魔力

圖片的功能非常強大&#xff0c;有一圖勝千言的效果&#xff0c;所以在文檔或演示文稿中使用圖片來增加趣味性是一種很棒的想法。但問題是&#xff0c;圖片通常會變為文字中間的獨立矩形&#xff0c;而不是真正與內容融合在一起。您可以在圖片中放置邊框或效果&#xff0c;使其…

Puppet 之 模板和模塊

1 概述模板文件是在puppet模塊下面templates目錄中以”.erb”結尾的文件&#xff0c;puppet模板主要用于文件&#xff0c;例如各種服務的配置文件&#xff0c;相同的服務&#xff0c;不同的配置就可以考慮使用模板文件。模塊是Puppet自包含的代碼和數據集合。絕大多數的清單都…

java異步io_Java中的異步IO與異步請求處理

java異步ioIn this article, I am trying to explain the difference between Async-IO and Async-Request processing in the HTTP request in the Java world.在本文中&#xff0c;我試圖解釋Java世界中HTTP請求中Async-IO和Async-Request處理之間的區別。 In the pre-Java …

異常檢測機器學習_使用機器學習檢測異常

異常檢測機器學習什么是異常檢測&#xff1f; (What is Anomaly Detection?) The anomaly detection problem has been a problem that has been frequently explored in the field of machine learning and has become a classic problem. Anomalies are any unusual sequenc…

數據挖掘—BP神經網絡(Java實現)

public class Test {public static void main(String args[]) throws Exception {ArrayList<ArrayList<Double>> alllist new ArrayList<ArrayList<Double>>(); // 存放所有數據ArrayList<String> outlist new ArrayList<String>(); // …

c語言掌握常用函數,c語言一些常用函數.pdf

c語言一些常用函數C 語言程序設計(常用函數說明)C 語言是 1972 年由美國的 Dennis Ritchie 設計發明的,并首次在 UNIX 操作系統的 DEC PDP-11 計算機上使用。它由早期的編程語言 BCPL(Basic Combind ProgrammingLanguage)發展演變而來。在 1970 年,AT&T 貝爾實驗室的 Ken T…

高階函數 - 函數節流

/*** 函數節流 - 限制函數被頻繁調用* param {Function} fn [需要執行的函數]* param {[type]} interval [限制多長的時間再重復執行fn]*/var throttle function(fn, interval) {var __self fn,timer,firstTime true;return function() {var args arguments,__me…

[CareerCup] 8.7 Chat Server 聊天服務器

8.7 Explain how you would design a chat server. In particular, provide details about the various backend components, classes, and methods. What would be the hardest problems to solve? 這個簡易的聊天服務器功能十分的有限&#xff0c;畢竟只是針對面試題的&…

react hooks使用_如何開始使用React Hooks:受控表格

react hooks使用by Kevin Okeh由Kevin Okeh 如何開始使用React Hooks&#xff1a;受控表格 (How to Get Started With React Hooks: Controlled Forms) React Hooks are a shiny new proposal that will allow you to write 90% cleaner React. According to Dan Abramov, Hoo…

特征工程tf-idf_特征工程-保留和刪除的內容

特征工程tf-idfThe next step after exploring the patterns in data is feature engineering. Any operation performed on the features/columns which could help us in making a prediction from the data could be termed as Feature Engineering. This would include the…

c語言定義數組a10 指定各元素,C語言填空題.doc

C語言填空題.doc二、填空題1、C 語言只有 32 個關鍵字和 9 種控制語句。2、每個源程序有且只有一個 main 函數&#xff0c;系統總是從該函數開始執行 C 語言程序。 3、C 語言程序的注釋可以出現在程序中的任何地方&#xff0c;它總是以 * 符號作為開始標記&#xff0c;以 */ 符…

貓狗隊列

功能要求&#xff1a; 用戶可以調用push方法將cat類或dog類的實例放入隊列中;用戶可以調用pollAll方法&#xff0c;將隊列中所有的實例按照進隊列的先后順序依次彈出;用戶可以調用pollDog方法&#xff0c;將隊列中dog類的實例按照進隊列的先后順序依次彈出;用戶可以調用pollCat…

如何使用HTML5,JavaScript和Bootstrap構建自定義文件上傳器

by Prashant Yadav通過Prashant Yadav 如何使用HTML5&#xff0c;JavaScript和Bootstrap構建自定義文件上傳器 (How to build a custom file uploader with HTML5, JavaScript, & Bootstrap) In this short article, we’ll learn how to create custom file uploader wit…