为什么整型数据范围是-32768至32767 而不是-65534至32767

就是为什么二字节中在内存不能存为1111 1111 1111 11111
即-65534
如果说第一位是符号位的话
那么为什么-32768可表示为
1000 0000 0000 0000

负数表示形示是补码。
正数是原码表示。
而整形最大为0111 1111 1111 1111.十进制为32767+1变为
1000 0000 0000 0000即为负数按补码算。就为-32768。
1111 1111 1111 1111为-1.
温馨提示:内容为网友见解,仅供参考
第1个回答  2008-08-27
负数在内存中是补码,转换成原数要取反加1
第2个回答  2008-08-26
第一位是符号位,所以实际上是少一位的。
第3个回答  2008-08-26
郁闷得死人的问题。
2字节最多表示65536个数。除2,你说表示多少?

为什么整型数据范围是-32768至32767 而不是-65534至32767
负数表示形示是补码。正数是原码表示。而整形最大为0111 1111 1111 1111.十进制为32767+1变为 1000 0000 0000 0000即为负数按补码算。就为-32768。1111 1111 1111 1111为-1.

...定义无符号整型a=65535是属于什么进制? 为什么按%d格式输出时a=1...
一楼的解答搞错了,无符号整型的范围是0-65535,而不是0-65534。无符号整型在C语言中占用两个字节,一个字节是八位,两个字节就是十六位,然后用二进制代码表示就是0000 0000 0000 0000~1111 1111 1111 1111(这个换算成十进制就是65535)补充:对于有符号整型,也是占用两个字节,最高位为符号位,...

c语言的四种基本运算是什么
,-1,0,1,2,...),分为有符号整型(sign int)、无符号整型(unsign int)(即数学意义上的正数)、短整型(short int )以及长整型(long int),而我们通常定义的int系统默认为sign int;而上述四种类型int的主要区别是数值范围不同,其中sign int 的范围是 -32767到32767;unsign int 的范围是...

65535是2的几次方(65530是2的多少次方)
4、268435456是2的几次方。1.2的16次方是65535,所以65535是2的16次方。2.它表示有2^16个数,数字是从0开始的,1位字长的两个数是0,1,所以数据范围的上限要减1,有符号的整型变量的取值范围是65536至-65536就是2^16-1至-2^16,这里面一共有32位,就是4个字节的存储空间。

为什么最后无符号输出的是655534而不是2
题目 "655534" 应是问 65534 或 4294967294 吧。输出语句里的格式定义,实际上是 程序员 对 输出 时 的数据转换要求。d 则是要求 把内存数据看成 有符号整型数值,u 则是要求 把内存数据看成 无符号整型数值。负数,机器内用补码形式存放。 -2, 内存是 0xfffffffe.你的程序用的是古...

相似回答