回覆列表
  • 1 # ztrfg7067

    這是一種過時的說法了,只有在比較古老的書上才可以看到。對於有符號整型,也就是int型,是和編譯器的字長有關的,只有在16位編譯器上,int型別佔2個位元組,其表示範圍才是-32768~32767; 對於32位和64位編譯器,int型別佔4位元組,表示範圍為-2147483648~2147483647。以16位編譯器為例,介紹其原理,對於32位和64位類似。int為有符號整型數,在16位編譯器上佔2位元組16位。對於有符號數,計算機中表達時,最高位約定為符號位,當符號位為0時為正數,符號位為1時為負數。所以真正表達值的部分是剩餘的15位,這15位的範圍就是二進位制的000 0000 0000 0000到111 1111 1111 1111。轉換成十進位制也就是0~32767。所以,正數的表示範圍就是1~32767. 其中有一個特殊的值,就是0值,對於符號位1和0的時候,值都是0,用兩個形式表示同一個數無疑是浪費的,符號位為1時的全0,就用來表達-32768了,這也是負數表示的範圍比正數多1的原因。綜上,對於任意位的,無論是8位,16位,32位甚至64位的整數型別表示範圍的計算公式為:如總位數為n位,那麼有符號數的範圍為-2^(n-1) ~ 2^(n-1)-1無符號數的表示範圍為:0~2^n-1在這個公式中,^表示乘方。2^n就是2的n次冪。

  • 2 # 使用者6801343058834

    有符號整形變數int型的,在c語言裡面規定是用兩個位元組也就是16個二進位制位來表示的。最高為用來表示正負,後面還有15位數,於是一共可以表示2的15次方個數字,也就是32768個,但是呢,數字0是用的16個二進位制0表示的,所以正數只能到32767了,負數則是到-32768.這兩個數字就是這麼來的

  • 中秋節和大豐收的關聯?
  • 手機漏電的電壓多大,有點麻麻的,對人體有什麼影響?