电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

为什么short整型(16位)的范围是-32768到32767?汇总

11页
  • 卖家[上传人]:枫**
  • 文档编号:458532713
  • 上传时间:2022-10-30
  • 文档格式:DOC
  • 文档大小:48.50KB
  • / 11 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 1、为什么short整型(16位)的范围是-32768到32767 ?计算机为什么要用反码存储整型这得从二进制的原码说起:如果以最高位为符号位,二进制原码最大为011111111111111仁2的15次方减 仁32767最小为 1111111111111111=-2的 15 次方减 1= -32767此时 0有两种表示方法,即正 0和负 0: 0000000000000000=1000000000000000=0所以,二进制原码表示时,范围是 -32767-0和032767,因为有两个零的存在,所以不同的数值个数一共只有 2的16次方减1个,比16位二进制能够提供的2的16次方个编码少1 个。但是计算机中采用二进制补码存储数据,即正数编码不变,从0000000000000000 到0111111111111111依旧表示0到32767,而负数需要把除符号位以后的部分取反加1,即-32767 的补码为 1000000000000001。到此,再来看原码的正 0和负0 : 0000000000000000 和1000000000000000,补码表示中,前者的补码还是0000000000000

      2、000,后者经过非符号位取反加 1后,同样变成了0000000000000000,也就是正0和负0在补码系统中的编码是一样的。但是,我们知道,16位二进制数可以表示2的16次方个编码,而在补码中零的编码只有一个,也就是补码中会比原码多一个编码出来,这个编码就是1000000000000000,因为任何一个原码都不可能在转成补码时变成 1000000000000000 。所以,人为规定1000000000000000这个补码编 码为-32768。所以,补码系统中,范围是 -2376832767 。因此,实际上,二进制的最小数确实是1111111111111111,只是二进制补码的最小值才是 1000000000000000,而补码的 1111111111111111是二进制值的-1。补码原码、反码、补码数值在计算机中表示形式为机器数,计算机只能识别0和1,使用的是二进制,而在日常生 活中人们使用的是十进制,”正如亚里士多德早就指出的那样,今天十进制的广泛采用,只不过我们绝大多数人生来具有10个手指头这个解剖学事实的结果尽管在历史上手指计数(5,10进制)的实践要比二或三进制计数出现的晚.

      3、(摘自 有空大家可以看看哦,很有意思的)为了能方便的与二进制转换,就使用了十六进制(2 4)和八进制(23).下面进入正数值有正负之分,计算机就用一个数的最高位存放符号(0为正,1为负)这就是机器数的原码了.假设机器能处理的位数为 8即字长为Ibyte,原码能表示数值的范围为(-127-0 +0127)共 256 个.有了数值的表示方法就可以对数进行算术运算但是很快就发现用带符号位的原码进行乘除运算时结果正确,而在加减运算的时候就出现了问题,如下:假设字长为8bits(1 )10- ( 1 )10 = ( 1 )10 + ( -1 )10 = ( 0 )10(00000001)原 + (10000001) 原=(10000010) 原=(-2 ) 显然不正确.因为在两个整数的加法运算中是没有问题的,于是就发现问题出现在带符号位的负数身上对除符号位外的其余各位逐位取反就产生了反码反码的取值空间和原码相同且一一对应F面是反码的减法运算(1 )10 - ( 1 ) 10= ( 1 )10+ ( -1 ) 10= ( 0 )10(00000001)反 + (11111110)反=(111111

      4、11)反=(-0 )有问题(1 )10 - ( 2)10 = ( 1 )10 + ( -2 )10 = ( -1 )10(00000001)反 + (11111101)反=(11111110)反=(-1 )正确问题出现在(+0)和(-0)上,在人们的计算概念中零是没有正负之分的(印度人首先将零作为标记并放入运算之中,包含有零号的印度数学和十进制计数对人类文明的贡献极大)于是就引入了补码概念负数的补码就是对反码加一,而正数不变,正数的原码反码补码是一 样的在补码中用(-128)代替了 (-0),所以补码的表示范围为:(-1280127) 共 256 个注意:(-128)没有相对应的原码和反码 ,(-128) = (10000000)补码的加减运算如下(1 ) 10- ( 1 ) 10= ( 1 )10 + ( -1 )10 = ( 0 )10(00000001)补 + (11111111) 补=(00000000)补=(0 )正确(1 ) 10- ( 2) 10= ( 1 )10 + ( -2 )10 = ( -1 )10(00000001) 补 + (11111110)补=(11111

      5、111)补=(-1 )正确所以补码的设计目的是使符号位能与有效值部分一起参加运算,从而简化运算规则使减法运算转换为加法运算,进一步简化计算机中运算器的线路设计所有这些转换都是在计算机的最底层进行的,而在我们使用的汇编、C等其他高级语言中使用的都是原码。看了上面这些大家应该对原码、反码、补码有了新的认识了吧!有网友对此做了进一步的总结:本人大致总结一下:1、在计算机系统中,数值一律用补码来表示(存储)。主要原因:使用补码,可以将符号位和其它位统一处理;同时,减法也可按加法来处理。另外,两个用补码表示的数相加时,如果最高位(符号位)有进位,则进位被舍弃。2、补码与原码的转换过程几乎是相同的。数值的补码表示也分两种情况:(1)正数的补码:与原码相同。例如,+9的补码是00001001 。(2 )负数的补码:符号位为1,其余位为该数绝对值的原码按位取反;然后整个数加 1。例如,-7的补码:因为是负数,则符号位为“11000整个为;其余7位为-7的绝对值+7的原码0000111按位取反为1111000 ;再加1,所以-7的补码是11111001 。已知一个数的补码,求原码的操作分两种情况:(1

      6、)如果补码的符号位为“0”,表示是一个正数,所以补码就是该数的原码。(2 )如果补码的符号位为“1 ”,表示是一个负数,求原码的操作可以是:符号位为,其余各位取反,然后再整个数加 1。例如,已知一个补码为 11111001 ,则原码是10000111 (-7):因为符号位为“1 ”,表示是一个负数,所以该位不变,仍为“7位11其余01取反后为0000110 ;再加1,所以是 10000111 。在“闲扯原码、反码、补码”文件中,没有提到一个很重要的概念“模”。我在这里稍微介绍一下“模”的概念:“模”是指一个计量系统的计数范围。如时钟等。计算机也可以看成一个计量机器,它也有 一个计量范围,即都存在一个“模。例如:时钟的计量范围是 011,模=12。表示n位的计算机计量范围是 02(n)-1,模=2 (n)。【注:n表示指数】计量器上只“模”实质上是计量器产生“溢出”的量,它的值在计量器上表示不出来,能表示出模的余数。任何有模的计量器,均可化减法为加法运算。例如:假设当前时针指向10点,而准确时间是6点,调整时间可有以下两种拨法:一种是倒拨4小时,即:10-4=6另一种是顺拨8小时:10+

      7、8=12+6=6在以12模的系统中,加8和减4效果是一样的,因此凡是减 4运算,都可以用加8来代替。对“模”而言,8和4互为补数。实际上以12模的系统中,11和1,10和2,9和3,7和5,6 和6都有这个特性。共同的特点是两者相加等于模。对于计算机,其概念和方法完全一样。n位计算机,设n=8,所能表示的最大数是11111111 , 若再加1称为100000000(9位),但因只有8位,最高位1自然丢失。又回了 00000000,所以 8位二进制系统的模为2(8)。在这样的系统中减法问题也可以化成加法问题,只需把减数用 相应的补数表示就可以了。把补数用到计算机对数的处理上,就是补码。/关于算术运算的溢出问题,曾经我也迷茫过,而且不知道为什么整型变量溢出后会是模运算的结果呢,以前还以为是不可以预测的,不过弄懂了原码、补码的概念后,就发现其实都是有规律可循的,如果你还不太清楚补码什么东西,建议先看看随笔计算机中的原码、反码和补码,弄清楚整型数据在计算机中是如何储存的。在那篇文中,我们讲述了为什么我们把 -1强制成无符号短整型输出后会得到65535,在这里我们不对它进行类型转换,我们只是超出

      8、它的范围看看。还是定义一个2字节大小的短整型 short short n;,学了前面的知识,我们知道这里n的范围是-3276832767 ,而且通过前面知识我们也知道:这里的-32768在计算机中特殊表示为 10000000 00000000032767 是 00000000 0000000001111111 11111111-1-32767 是 11111111 1111111110000000 00000001当我们赋值n=32767,我们先n+1,超出它的范围,再输出n看看,结果是-32768,为什么?我们来分析一下,32767在内存中是以01111111 11111111储存的,我们对这个二进制码加1运算看看,结果是10000000 00000000,它表示的数是多少,哈哈,这不就是-32768吗?不甘心,也许是巧合呢,那我们再加1看看,结果是10000000 00000001, 表示的是-32767,再多试几个也一样的。哦,原来不是巧合呀,正因为如此,所以我们就 不用这么繁琐了,直接进行模运算就可以了!啊?什么是模运算?昏模运算就是除整取 余的运算。下面我把书上的例子再拿出来给你讲你就明白了。在16位机器上进行下面的操作:/为什么强调16位机器?因为16位机器上的short型的存储空间是2个字节short weight=42896;如果你把输出,在16位机器中将不能得到42896,而是-22640。因为有符号整数的表示范围是-3276832767 (共65536个数),所以它只能得到 42896的补码-22640(42896-65536=-22640)。一个整型类型的变量,用任何一个超过表示范围的整数初始化,得到的值为用该整数范围作模运算后的值。例如:short weight=142896;则当weight是2字节整型数时,得到值为11824。因为142896

      《为什么short整型(16位)的范围是-32768到32767?汇总》由会员枫**分享,可在线阅读,更多相关《为什么short整型(16位)的范围是-32768到32767?汇总》请在金锄头文库上搜索。

      点击阅读更多内容
    最新标签
    监控施工 信息化课堂中的合作学习结业作业七年级语文 发车时刻表 长途客运 入党志愿书填写模板精品 庆祝建党101周年多体裁诗歌朗诵素材汇编10篇唯一微庆祝 智能家居系统本科论文 心得感悟 雁楠中学 20230513224122 2022 公安主题党日 部编版四年级第三单元综合性学习课件 机关事务中心2022年全面依法治区工作总结及来年工作安排 入党积极分子自我推荐 世界水日ppt 关于构建更高水平的全民健身公共服务体系的意见 空气单元分析 哈里德课件 2022年乡村振兴驻村工作计划 空气教材分析 五年级下册科学教材分析 退役军人事务局季度工作总结 集装箱房合同 2021年财务报表 2022年继续教育公需课 2022年公需课 2022年日历每月一张 名词性从句在写作中的应用 局域网技术与局域网组建 施工网格 薪资体系 运维实施方案 硫酸安全技术 柔韧训练 既有居住建筑节能改造技术规程 建筑工地疫情防控 大型工程技术风险 磷酸二氢钾 2022年小学三年级语文下册教学总结例文 少儿美术-小花 2022年环保倡议书模板六篇 2022年监理辞职报告精选 2022年畅想未来记叙文精品 企业信息化建设与管理课程实验指导书范本 草房子读后感-第1篇 小数乘整数教学PPT课件人教版五年级数学上册 2022年教师个人工作计划范本-工作计划 国学小名士经典诵读电视大赛观后感诵读经典传承美德 医疗质量管理制度 2
     
    收藏店铺
    关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
    手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
    ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.