1樓:網友
對頌耐於n位無符號整數,所能表示數的範圍在0到2的n次方握櫻姿減一,不存在表示精度的問段絕題,只存在表示範圍不足的問題,即只有上溢,沒有下溢。
為什麼0是整數系裡唯一乙個沒有註明奇偶的數?
2樓:網友
奇數、偶數原是數論中的概念。數論是正整數的理論。
可以把奇數、偶數推廣到這個整數集,0是偶數。
如何判斷整數是否溢位
3樓:茆詩蘭光冰
c語言中存在兩類整數算術運算,有符號運算和無符號運算。在無符號運算裡,沒有了符號位,所以是沒有溢位的概念的。
所有的無符號運算都是以2的n次方為模。如果算術運算子的乙個運算元是有符號書,另乙個是無符號數,那麼有符號數。
會被轉換為無符號數(表示範圍小的總是被轉換為表示範圍大的),那麼溢位也不會發生。但是,當兩個運算元都是有符號數。
時,溢位就有可能發生。而且溢位的結果是未定義的。當乙個運算的結果發生溢位時,任何假設都是不安全的。
例如,假定a和b是兩個非負的整型變數(有符號),我們需要檢查a+b是否溢位,一種想當然的方式是:
if(a+b
0)溢位;實際上,在現實世界裡,這並不能正常執行。當a+b確實發生溢位時,所有關於結果如何的假設均不可靠。比如,在某些。
機器的cpu,加法運算將設定乙個內部暫存器為四種狀態:正,負,零和溢位。在這種機器上,c編譯器完全有理由實現以上。
的例子,使得a+b返回的不是負,而是這個記憶體暫存器的溢位狀態。顯然,if的判斷會失敗。
一種正確的方式是將a和b都強制轉換為無符號整數:if(
unsigned)a
unsigned)b
int_max)
溢位;這裡的int_max值為有符號整型的最大值。在一般的編譯器裡是乙個預定義的常量。ansi
c在limits裡定義了int_max,值為。
2的31次方-1.
不需要用到無符號算數運算的另一種可行方法是:
if(aint_max-b
溢位;ps:
有符號數的最高位(31位)為符號位,最高位為0的時候,表示正,為1的時候表示負。運算時,符號位不參加運算,但是如果兩個數相加,30位需要進1時,那麼即表示溢位。
關於0是不是最小的整數為什麼有兩種說法?
4樓:網友
0是已知最小的自然數,但還算不上整數,所以1是最小的整數。
5樓:鄺培勝裔媼
選ab錯誤!沒有最小的整數。
6樓:網友
這個很簡單,如果你們學了負數這個概念,那麼零就不是最小整數,如果到你們畢業為止都沒有學過負數的話那麼零就是最小負數。
不過據我的記憶負數的概念應該是初中才會學習的。
7樓:0蒼龍破
因為你在小學階段 所以零是最小的整數。
8樓:乘法懲罰
0不是最小的整數(數學書上寫的)。
9樓:忘記吾到
問老師吧 也不敢說 因為不是小學的……
10樓:網友
不是 最小的應該是負整數。
如-1,-2
11樓:網友
理由一\數學性質。
作為自然數,0既不是素數也不是合數。
平方數0是偶數。
0非正非負,0的相反數和絕對值是其本身。
0乘以任何實數都等於0,0加上任何實數等於其本身。
0沒有倒數和負倒數,乙個非0的數除以0無意義,0除以0有無窮多個解。
0的正數次方等於0,0的0和負數次方無意義。
0不能做對數的底數和真數。
0的0次方是未定義的,但有時亦採用為1其值。
從中知道0不是最小的整數。
理由二\數學概念。
整數分負數,0,正整數。
自然數分0,正整數。
最小的是負數。
0是分界線或起點,
整數中有沒有包括0?為什麼?
12樓:旗淑蘭鬱乙
包括了整數(integer)
序列…,-2,-1,0,1,2,…中的數稱為整數.整數的全體構成整數集,整數集合是乙個數環。
在整數系中,自然數為正整數,稱0為零,稱-1,-2,-3,…,n,…
n為整數)為負整數。正整數,零與負整數構成整數系。
正整數是從古代以來人類計數(counting)的工具。可以說,從「一頭牛,兩頭牛」或是「五個人,六個人」抽象化成正整數的過程是相當自然的。事實上,我們有時候把正整數叫做自然數(the
natural
numbers).
零不僅表示「無」,更是表示空位的符號。中國古代用算籌計算數並進行運算時,空位不放算籌,雖無空。
位記號,但仍能為位值記數與四則運算創造良好的條件。印度-阿拉伯命數法中的零(zero)來自印度的(sunya)字,其原意也是「空」或「空白」.
中國最早引進了負數。《九章算術。方程》中論述的「正負數」,就是整數的加減法。
減法的需要也促進了負整數的引入。減法運算可看作求解方程a+x=b,如果a,b是自然數,則所給方程未必有自然數解。為了使它恆有解,就有必要把自然數系擴大為整數系。
正整數,零,和負整數合稱整數(the
integers).整數是人類能夠掌握的最基本的數學工具。
(c語言)整型資料的溢位
13樓:網友
其實這個問題很簡單的,這個可能和你編譯器環境有關,int 型別表示範圍是-32768-32767。所以你可以把它的表示範圍比作乙個圓。因為在電腦中負數是按補碼儲存的,所以加1之後會出現進位。
如果是char 型別表示-128-127的話,那麼char a = 128也會變成-128的。
你可以看一下下面的圖,這個圓就好比表示的範圍。如果不信的話你可以將int a = 32769;試試的,輸出應該會變成-32787
14樓:網友
這個是計算機中的負數補碼錶示。
假定有符號的最大值(二進位) 為0111...111 後面若干個1 當然 取決於計算機的位長度。
增加1之後溢位的話 就成了 1000...000 這個時候符號位就變成了1 也就是會被判定為負數。
然後再轉換成十進位自然就是負數了。
15樓:網友
你用的是16 bit的編譯器吧,16bit的編譯器的int範圍是,32767 ~ 32768
對於32 bit而言 int型,表示的範圍是2147483647~-2147483648
請注意,最大範圍是32767,不是32768;
32768的最高bit是1,1就表示負數。
32768 --0x8000 = -32768
16樓:眾裡尋他
有符號位整型的最大為32767吧。
能給我解釋一下第三踢嗎?z是整數,整數包含了0,真整數和負整數,為什麼零沒有補進去?
17樓:匿名使用者
<>望棚模缺鏈辯採碼野納。
18樓:漫雨弒天
定義的行宴話,整數包含謹鄭正整數,0,負整數。如果要多點的話:還可祥帶頌以說整數包含自然數,負整數,質數,合數,完全數,奇數,偶數,盈數,虧數等等,更窄的可以說還包含整十數,整百數,整千數……
為什麼c語言對符號整型溢位沒有規範定義
19樓:林
有規範定義!平時我們做1+(-1)其實也是溢位後的結果!
我們看到的二進位叫原始碼(符號位+二進位位),而計算機內部是補碼形式儲存的。
原始碼和補碼之間有乙個叫反碼的東西,非負數的原始碼=這個數的反碼=這個數的補碼。
負數的反碼是除符號位外,其他位按位取反,補碼是反碼+1
例: int x=-5;(int佔32位)
則x的原始碼是10000000 00000000 00000000 00000101
反碼就是11111111 11111111 11111111 11111010
補碼是 11111111 11111111 11111111 11111011
在運算的時候,溢位位自然丟失。
1+(-1)在計算機中計算的時候應該是:
00000000 00000000 00000000 00000001 (1的補碼)
11111111 11111111 11111111 11111111 (-1的補碼)
溢位位自然丟失。結果是。
00000000 00000000 00000000 00000000 (0的補碼)
因此1+(-1)=0
你還可以用這個規則去試其他的整數。
例如(在int下):2147483647*2=(-2)
01111111 11111111 11111111 11111111 (2147483647的補碼)
00000000000000000000000000000000010 (2的補碼)
011111111 11111111 11111111 11111110 (-2的補碼)
溢位的符號位自然丟失,結果是。
11111111 11111111 11111111 11111110 (-2的補碼)
因此(在int下)2147483647*2=(-2)
20樓:網友
有的,所有資料型別都有取值範圍,包括上下限,這就是定義。
float為什麼可以表示很大的整數
聽不清啊 這個資料已經失真了。我們知道,1 1 2 2 3 6 4 24 5 120 6 720 以後每個數的階乘其末尾個位數肯定是0,所以,1 2 20 的個位數肯定是1 2 3。所以,上面程式計算得出的數肯定是不對的了。這是由於不同的型別所能表示數的範圍和精度所決定的 long最大能表示到21億...
整數部分是0的小數一定比1小。請問是對還是錯
是對的,採納吧。 蒯讓寶靜 解 正確 整數部分是0的小數,被稱之為純小數。純小數比1小 整數部分是0的小數一定比1小.請問是對還是錯 雖然幾乎所有0開頭的小數都比1小,如0.5 1,0.768 1。但有一個例外 0.9999999 1 因為內0.999999 與容1的差為0.000000 最後一位為...
x大於1是屬於正整數。為什麼表示是x R
x大於1是屬於正整數利用集合描述法的正確表示應該是或者是。n 或者n 表示的是正整數集合,而r表示的是實數集合,因此的表示法不正確。集合的表示方法一共有三種列舉法 描述法和符號法,有時在描述法中會用到符號法中的符號。描述法的書寫法則如下 設集合s是由具有某種性質p的元素全體所構成的,則可以採用描述集...