C语言int型(2字节)数据的值的范围为啥是-2^15~(2^15-1)?
不问是不是,就问为什么。。。C语言标准根本不定各种整形的具体尺寸,何来固定的数值范围?我要是搞个鬼畜的系统,一字节10位,然后定int为8字节,怎么办?===============================实际上,由于int通常使用补码表示负数,这样一来,符号位为0的零值是零,而符号位为1的负数范围不需要表示0,就额外多了一个可用的数。比如以四位为例:0000:00001:10010:20011:30100:40101:50110:60111:71000:-81001:-71010:-61011:-51100:-41101:-31110:-21111:-1
■网友
计算机整数使用补码表示。1. 为什么用补码?因为补码相加的话,加法器的逻辑电路不需要做偏移修正。你可以试一下1+(-1)的原码和补码就明白了。2. 补码的话,对于int16而言,最高位是符号位,后面是15位数据位。因为整数非负的时候补码和原码一致,负数时为按位取反+1。所以最小的非负是16个0,最大的非负是0后面15个1,最大的负数是16个1,最小的负数是1后面15个0。综合以上,所以int16的表示范围是
■网友
2byte int能最大数是8FFF,也就是 【C语言int型(2字节)数据的值的范围为啥是-2^15~(2^15-1)?】
■网友
根本没有的事情。不要连事实都没搞清楚就提问
■网友
补码表示规则要求这样
■网友
10000000 00000000(第一位表示符号)是2字节中最小数,是负数,是10000000 00000000的补码,十进制中是-2∧15;011111111 11111111是最大数,是正数。转换成十进制是2∧15-1。||也可以这样理解0~32767共有32768个数(二进制码以0开头),-1~-32768共有32768个数(二进制码以1开头),这样想强迫症估计能缓解下。
■网友
这种问题,还是要多看书啊。
■网友
因为0也是一个值
推荐阅读
- OC为何跌出语言榜前十
- dart这编程语言现在发展怎么样了,语法与Java,c#很相似,甚至更简洁
- 人民车市|新语言、新起点,捷达VS7 强势入局
- C语言 指针引用数组的地址问题
- 零基础入门学习啥语言好
- 营销型外贸网站用哪种建站程序和语言比较好呢主要是适合优化,可扩展兼容性,安全性,后期网站扩展升级
- 有哪些轻易就被识别的淘宝刷单评论语言
- 在dribble和Pinterest等设计师网站上有哪些不得不关注的设计大神
- C语言指数函数代码
- 我现在在学c语言,然后以后的工作目标是腾讯网易这些游戏公司,我是通信专业,请问我接下来再该学些啥呢
