C語言中的整數-1在內存中是什麼,計算機只有0和1

2020-12-03 萬年長長青

有如下C語言程序:

執行後輸出:

問題是:計算機中保存的是0和1,不能保存負號,那麼整數-1又是由怎樣的0和1的組合構成的呢?

不妨,我們再添加一行程序,如下:

輸出結果是:

說明整數-1在內存中保存的是若干個二進位1,a=-1=0xffffffff=二進位的32個1。

其實,在C語言中,對於整數是按補碼形式保存的,-1的補碼就是ffffffff。

另外C語言的float類型,在內存中存儲的時候,是由怎樣的二進位序列保存呢,請閱讀隨後的文檔,謝謝

相關焦點

  • C語言中float類型123.125在內存中存的是什麼,計算機內部是0和1
    C語言中float類型的123.125在內存中是怎樣存儲的,它是怎樣的一個二進位序列呢?下面就一起探討一下:一、運行輸出看結果編寫C語言程序如下:輸出:第一行輸出就是按照%f輸出浮點型;第二行輸出,二、分析為什麼123.125保存在float類型裡,保存的是42f64000(十六進位)C語言float類型,是按照IEEE754標準格式進行存儲的,是32位的。計算過程如下:
  • C語言中的char類型也有signed和unsigned?字符也有正負之分嗎?
    的確,char 是 character 的縮寫,很多時候我們會把 char 類型當作是「字符類型」,但是在高度概括抽象的C語言中,字符也是整數,只不過它們遵循一些編碼而已,因此說 char 類型也是一種整型並不為過。
  • C語言中的運算符和表達式
    一、賦值運算符和賦值表達式1、賦值運算符C語言的賦值運算符為等號,表示形式「=」。此外,還有複合賦值運算符,後續陸續介紹。二、算術運算符和算術表達式對計算機中數據進行算術運算的運算符,稱為算術運算符,包括數學中學到的加減乘除和一些擴展。
  • C語言中signed char類型,能表示-128到127,為什麼負數多一位?
    這裡僅簡要的說下C語言中補碼是如何獲得的,其實很簡單:正數和 0 的補碼等於自身,負數的補碼則是將其對應正數按位取反再加1。例如正數 0b00000011(3) 的補碼等於其自身,仍然為 0b00000011,而 0b10000001(-1)的補碼等於 0b11111110 + 1 也即 0b11111111(0xFF)。
  • 嵌入式C中的結構是什麼?
    該模板包含一個uint16_t數組和一個float類型的變量。模板的名稱是record,它位於關鍵字struct之後。值得一提的是,存儲結構模板沒有內存分配。只有在定義了基於此布局的結構變量之後,才會進行內存分配。以下代碼聲明了上述模板的變量mic1:struct record mic1;為變量mic1分配了一段內存。
  • 浮點數在計算機中是如何表示的
    來源:編程珠璣前言相比int等整型,float等浮點類型的表示和存儲較為複雜,但它又是一個無法迴避的話題,那麼就有必要對浮點一探究竟了。在計算機中,一般用IEEE浮點近似表示任意一個實數,那麼它實際上又是如何表示的呢?下面的表達式裡,i的值是多少,為什麼?如果你不確定答案,那麼你應該好好看看本文。
  • ARM中ADS環境下C語言和彙編語言混合編程及示例
    ;  char b[64];  my_strcpy(a, b);  printf(original %s, a);  printf(copyed %s, b);  return 0;  }  在此例子中C語言和彙編之間的值傳遞是用C語言的指針來實現的,因為指針對應的是地址,所以彙編中也可以訪問。
  • 計算機二級考試C語言高頻考點
    一,C語言概述C語言基礎知識1.C語言的構成(1)源程序由函數構成,每個函數完成相對獨立的功能(2)每個源程序中必須有且只能有一個主函數可以放在任何位置格式轉換說明,由「%」和格式字符組成。複合賦值運算符的優先級與賦值運算符。需要原樣輸出的字符也寫在格式控制內「輸出表列」:需要輸出的一些數據,可以是3.賦值運算中的類型轉換量、變量或表達式。輸出表列中的各輸出項用逗格式字符;可在「%」與格式字符之間插入「寬度說明」,左對齊符號「-」、前導零符號「0」等。
  • C語言基礎知識學習(一)
    c) 用戶標識符根據需要定義的標識符。一般用來給變量、函數、數組、文件等命名。用戶標誌符如果與C語言的關鍵字重名,系統報錯;若與標準庫函數重名,系統不報錯,但預定義標識符將會失去原意,代之以用戶新定義的含義。顯然如果後面用到這個函數將會報錯。
  • C語言在單片機開發中的應用
    在單片機的開發應用中,已逐漸開始引入高級語言,C語言就是其中的一種。對用慣了彙編的人來說,總覺得高級語言』可控性』不好,不如彙編那樣隨心所欲。但是只要我們掌握了一定的C語言知識,有些東西還是容易做出來的,以下是筆者實際工作中遇到的幾個問題,希望對初學C51者有所幫助。一、C51熱啟動代碼的編制對於工業控制計算機,往往設有有看門狗電路,當看門狗動作,使計算機復位,這就是熱啟動。
  • 從Go語言角度剖析關於計算機位的問題
    在學習的過程中,發現了一個其實在正向開發中也用的很多的底層知識點,就是位和字節。比如一個數字a究竟是怎麼存在內存中的。一段代碼本次就以Go語言舉例,Go語言是類C語言,一些底層還是很相近的!為什麼變量c命名是98,卻能輸出b?位和字節要像理解上述問題,還是要理解本質問題。我們的程序,終究是跑在內存中的。而我們的內存條,大概是這樣。
  • 單片機的C語言中數組的用法
    數組是由數組名來表示的,數組中的數據由特定的下標來唯一確定。引入數組的目的,是使用一塊連續的內存空間存儲多個類型相同的數據,以解決一批相關數據的存儲問題。數組與普通變量一樣,也必須先定義,後使用。數組在C51語言的地位舉足輕重,因此深入地了解數組是很有必要的。下面就對數組進行詳細的介紹。
  • C語言基礎:二進位和計算機語言雜談(編程新手福利)
    密密麻麻的二進位正因為用電壓的高低可以穩定的表示開和關,所以計算機在計算機中只有兩個狀態來傳遞信息,一個高電平,一個低電平,在計算機中,用1表示高電平,用0表示低電平。所以,計算機世界中,只有0和1,其它的什麼都沒有。
  • 大學生計算機二級考試C語言中的函數入門詳解
    今天這次課程我們從基礎的函數講起,教你輕鬆入門C語言。算法是什麼?什麼是算法,這個就有點像我們學習數學的時候的計算了。比如你在排列組合中需要計算5!,但是,你並不知道這個5!是什麼意思和含義,那麼你將計算不出來。而如果我告訴你5!表示5的階乘,其計算方法就是從5開始一直乘到1就是最後的計算結果,那麼你就能計算出來5!了。
  • 自考「C語言程序設計」模擬試題十一
    一、單項選擇題(共30分,每題1分)  1.在PC機中,『\n』在內存佔用的字節數是(  )  A.1   B.2   C. 3   D.4  2.字符串「ABC」在內存佔用的字節數是(   )  A.3   B.  4
  • 定義只有一個數組成員的C語言結構體有什麼用?
    在C語言程序開發中,有經驗的程式設計師有時會定義只有一個數組成員的結構體,雖然語法簡單,但是卻常常讓初學者感到迷惑:這麼做有什麼好處嗎?struct ABC {unsigned long array[MAX];} abc;
  • C語言相關文件的基本知識
    用過計算機的人,對文件都不陌生,大多數人都接觸過,今天我們來講講關於C語言相關文件的基本知識。首先,我們先來了解了解什麼是文件。文件有不同的類型,在程序的設計中,主要有兩種文件; 1.程序文件;包括源程序文件(後綴為.c),目標文件(後綴為.obj),可執行文件(後綴為.exe)等,這類文件的內容是程序代碼。
  • 深入理解C語言
    導讀:Dennis Ritchie過世了,他發明了C語言,一個影響深遠並徹底改變世界的計算機語言。一門經歷40多年的到今天還長盛不訓的語言,今天很多語言都受到C的影響,C++,Java,C#,Perl,PHP,Javascript等等。但是,你對C了解嗎?相信你看過本站的《C語言的謎題》還有《誰說C語言很簡單?》。
  • C語言 | 溫度轉換(1)
    在編程方面有著天賦異稟的人畢竟是少數,我們大多數人想要從C語言小白進階到高手,需要經歷的是日積月累的學習。那麼如何學習呢?當然是每天都練習一道C語言題目!!作者閆小林白天搬磚,晚上做夢。我有故事,你有酒麼?例1:有人用溫度計測量出用華氏溫度98°F,現在要求用C語言實現把它轉換為以攝氏法表示的溫度。
  • 51單片機基礎剖析(基於C語言)
    2.函數的參數和局部變量的存儲模式 C51 編譯器允許採用三種存儲器模式:SMALL,COMPACT 和LARGE。一個函數的存儲器模式確定了函數的參數的局部變量在內存中的地址空間。處於SMALL模式下的函數參數和局部變量位於8051單片機內部RAM中,處於COMPACT和LARGE模式下的函數參數和局部變量則使用單片機外部RAM。