16位二进制有符号整数的表示范围是—32768到32767(共65535个数),这里面的—3276

16位二进制有符号整数的表示范围是—32768到32767(共65535个数),这里面的—32768是如何算的?详细点,有过程最好。。谢谢

补码的规则可以表示为:除了最高位以外,第 N 位如果为 1 ,对应的值是 2 的 N 次方(注意 N 的取值从 0 开始)。如果最高位是第 M 位,那么最高位的值是 2 的 M 次方的相反数

例如十六位二进制数 0000 0000 0000 0001 只有第 0 位是 1,对应的值是 2 的 0 次方即 1

十六位二进制数 0000 0000 0000 0011 只有第 0 位和第 1 位是 1,第 0 位对应的值是 2 的 0 次方即 1,第 1 位对应的值是 2 的 1 次方即 2,整个二进制数表示的值就是 1 + 2 即 3
十六位二进制数 1000 0000 0000 0000 只有最高位(第 15 位)是 1,对应的值是 2 的 15 次方的相反数,也就是 -32768

另外 -32768 到 32767 算上 0 的话一共是 65536 个数追问

困,头晕的很,哥们,谢谢,明天再看看

哥们,懂PLC吗

温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2017-05-30
这个数是规定的,如果没有这个规定,补码1000 0000 0000 0000的反码是1111 1111 1111 1111,原码是1000 0000 0000 0000,也就是-0,-0和0相等。而0000 0000 0000 0000也是0,所以规定1000 0000 0000 0000表示-2^15=-32768追问

看头晕

什么原码呀,反码呀,补码呀,晕

追答

原反补码之间在呢么转换你不清楚的话这个估计是有点难以理解,楼下说得也对,16位嘛,0000 0000 0000 0000 ~ 1111 1111 1111 1111,也就是就是 0~65535,既然有正有负,那就正负各占一半,让第一位表示符号,第一位为1就是负数,为0就是正数,这样正负数就各占一半了,分别是正的0~32767和负的0~32767,问题来了,正0和负0是一样的,没有必要用两个二进制形式去表示,所以让原本的-0,也就是1000 0000 0000 0000去表示-32768。

追问

困,头晕的很,哥们,谢谢,明天再看看

追答

你非要搞懂这个的话,你就需要了解原反补码,这个百度一下会有很多资料的

追问

哥们,你说的后面我有点疑惑,你说的“所以让原本负0,也就是1000000000000000去表示-32768”,这里有点不懂?还有你说让原本的负0去表示,那数值结果(也就是-32768)跟原来不让负0去表示的数值(也就是-32767吧),最终结果的数值意义不是改变了吗??

满意答复,给你采纳

追答

现在有两个二进制可以表示0,一个是0000 0000 0000 0000,还有一个是1000 0000 0000 0000,但是有必要用两个去表示一个数吗?用0000 0000 0000 0000去表示0就好了嘛,用到0的地方就是0000 0000 0000 0000。那这个1000 0000 0000 0000不能浪费了啊,总得表示一个数吧,于是人为规定它表示-32768

追问

1000000000000000等于-32768?

追答

这是Java运行结果,使用short是因为short变量大小正好为2个字节,即你这里的16位。以二进制形式为a变量赋值,由于Java默认整数数值类型为int,不强制类型转换的话这个数的第一位将不是符号位,表示数为32768,超出了short范围,故进行了强制类型转换操作,输出结果是-32768.

这是C语言,用Visual Studio调试的一个截图,同样使用short类型变量,这次将它赋值为-32768,在控制台输出变量地址,在内存窗口输入得到的内存地址,以二字节整数16进制形式显示,可以看到是8000,一个16进制位等价于4个二进制位,16进制的8000也就相当于二进制的1000 0000 0000 0000.你要是还有什么疑问,我真的是没招了

第2个回答  2015-08-13
16位二进制数的范围如下:

0000 0000 0000 0000 ~ 1111 1111 1111 1111
算成十进制就是 0~65535
把最高位看做+、-号,其余十五位的范围,就是0~32767.
-1 ~-32768追问

不懂—1~—32768

追答

2进制最大数如下

1111 1111 1111 1111

(规定)把最高位看做+、-号

+111 1111 1111 1111 2^15-1 =32767

-111 1111 1111 1111 -2^15 =-32768

为什么正数要减一,要这么理解,计算机语言中计数是从0开始的.

第3个回答  2015-08-13
二进制 2^15次方 等于32768

共65536个数 你忽略了0本回答被网友采纳
相似回答