我知道这个问题~有点无厘头和傻乎乎。还是想请人解答一下~
----------可能目前脑子正处于抽风阶段----------
首先,我知道int占4个字节,包含正负2的31次方内的数字,也就是基本可以表示10位数字。
那么根据Ascll里,一个数字占用一个字节的规则来思考。
我让int按照这种规则来储存数字,是不是应该只能储存最多4位数字???
还请明白人~指出我这样思考的错误点在哪里?或者告知正确的解答方式~。
怪我咯2017-04-18 09:28:53
字符和數值的表示方法是不同的,ascii碼裡面的數字不是數值,是用編碼表示的字符,因此每個數字字符佔7位(擴充的ascii碼佔8位)。例如12,,用ascii碼表示為0110001 0110010(它表示的是一二兩個數字字元組成的字串,並沒有十二的大小的涵義),,而用int則表示為00000000 00000000 000000000 00表示數值為十二的整數,一二、兩個數是不可分割的。 。總之數值與字元在電腦內表示的方法是不同的,,int不是用ascii碼表示的
巴扎黑2017-04-18 09:28:53
電腦真正儲存的都是二進制,一個位元組有8個位元組,用二進位表示,最大可表示11111111,即2的8次方-1,同理4個位元組有32個位元位,最大可表示2的32次方-1,你去了解微機原理就懂了。同時由於第一位通常是符號位,表示正負,0為正,1為負,所以帶符號數就是2的31次方-1。關於int,long,double等的字長是編譯器的約定,例如早期16位元機的int就是16個bit,最大值是65535,到了最近的VS版本,int都是4個位元組32個bit位了。
剛才漏掉了ASCII編碼的事情,一個ASCII碼是佔一個字元即8個bit, 你看看那個表就明白了,高4位和低四位來構成一張表,所以最多可以表示256個字元。 ASCII其實是字串來的。
怪我咯2017-04-18 09:28:53
感覺是兩件事。 int佔4位元組這個事能給你的限定是int能達到的最大值。而AscII說的一個數位佔用的空間是一個字節,應該是實體空間,佔了多大地方。這個空間理論上是可以無限大的,只要硬碟夠用,可以無限的長度。而int佔4位元組說的是能宣告出來的值佔的地方,聲明的值達到一定上下限(正負2的31次方)就會溢出。不管你的硬碟多大,這個限定在形同的機器上是不會變的。我是這麼理解的,我不知道你能不能理解。
黄舟2017-04-18 09:28:53
ASCII 是編碼規範,int 是表示的在記憶體中的儲存類型。就好像一輛小轎車規定最多5個人,多了交警就會處罰你,這就是int,而裡面做的是誰,叫什麼,身分證號是啥,這就是ASCII碼來規範的了。
怪我咯2017-04-18 09:28:53
int = 4位元組(Byte),而不是4位元組(bit)
1位元組 = 8位元位元(bit)
1個位元組 = 0或1
1個位元組 = 0-255
而現實生活中的十進制:
一位十進制= 0-9
滿10進1
二進制也是一樣的
1bit = 0-1
滿1進1
一個int 0 的二進位是: 00000000000結果是00
再+1000: 00000000000000000000001111101011
黄舟2017-04-18 09:28:53
一二和十二是兩個不同的概念。 1個位元組是8位元二進位數,所以int可以表示2的31次方內的數。例如1212,如果是按照ASCII來存儲,就是一二一二,如果是int存儲,是一千二百一十二