C语言数据类型的取值范围我们以V6.0编译器下面的short int 为例子.占2字节.16位.那么值域取值最大正数为0111 1111 1111 1111 那么对应的十进制数为2^15-1.这个我能够理解.0就带表符号位嘛.不参与运
来源:学生作业帮助网 编辑:作业帮 时间:2024/08/28 09:58:25
![C语言数据类型的取值范围我们以V6.0编译器下面的short int 为例子.占2字节.16位.那么值域取值最大正数为0111 1111 1111 1111 那么对应的十进制数为2^15-1.这个我能够理解.0就带表符号位嘛.不参与运](/uploads/image/z/8812613-29-3.jpg?t=C%E8%AF%AD%E8%A8%80%E6%95%B0%E6%8D%AE%E7%B1%BB%E5%9E%8B%E7%9A%84%E5%8F%96%E5%80%BC%E8%8C%83%E5%9B%B4%E6%88%91%E4%BB%AC%E4%BB%A5V6.0%E7%BC%96%E8%AF%91%E5%99%A8%E4%B8%8B%E9%9D%A2%E7%9A%84short+int+%E4%B8%BA%E4%BE%8B%E5%AD%90.%E5%8D%A02%E5%AD%97%E8%8A%82.16%E4%BD%8D.%E9%82%A3%E4%B9%88%E5%80%BC%E5%9F%9F%E5%8F%96%E5%80%BC%E6%9C%80%E5%A4%A7%E6%AD%A3%E6%95%B0%E4%B8%BA0111+1111+1111+1111+%E9%82%A3%E4%B9%88%E5%AF%B9%E5%BA%94%E7%9A%84%E5%8D%81%E8%BF%9B%E5%88%B6%E6%95%B0%E4%B8%BA2%5E15-1.%E8%BF%99%E4%B8%AA%E6%88%91%E8%83%BD%E5%A4%9F%E7%90%86%E8%A7%A3.0%E5%B0%B1%E5%B8%A6%E8%A1%A8%E7%AC%A6%E5%8F%B7%E4%BD%8D%E5%98%9B.%E4%B8%8D%E5%8F%82%E4%B8%8E%E8%BF%90)
C语言数据类型的取值范围我们以V6.0编译器下面的short int 为例子.占2字节.16位.那么值域取值最大正数为0111 1111 1111 1111 那么对应的十进制数为2^15-1.这个我能够理解.0就带表符号位嘛.不参与运
C语言数据类型的取值范围
我们以V6.0编译器下面的short int 为例子.占2字节.16位.那么值域取值最大正数为
0111 1111 1111 1111 那么对应的十进制数为2^15-1.这个我能够理解.0就带表符号位嘛.不参与运算.
最大的负数取值我不能够理解了.我理解的是最大的负值取值范围是 1000 0000 0000 0000.这个是补码的话.最高位1是符号位吧.那么我们获取源码就要取反吧.1111 1111 1111 1111在加一个 1 为 1 1000 0000 0000 0000这样就有一个问题.不是16位吗?现在有17位了呀!我的16位本来就应该把符号位给放进去吧.那么这个范围是-32768 -32767是吗?还是说计算机运算的时候.正数就用原码进行运算.负数就用补码进行运算.计算机本身不需要进行转换.
C语言数据类型的取值范围我们以V6.0编译器下面的short int 为例子.占2字节.16位.那么值域取值最大正数为0111 1111 1111 1111 那么对应的十进制数为2^15-1.这个我能够理解.0就带表符号位嘛.不参与运
取反后是 0111 1111 1111 1111,加1后还是 1000 0000 0000 0000.
举个便于理解补码的例子:一个时钟面,可以表示12个小时,无符号时可以表示0-11
如果要表示负数,6字代表-6点,7字代表-5点,能表示的范围是 -6 到 +5.
最大的负值的绝对值比最大正数大1.
这样符号为正的数字和符号为负的数字是一样多的.