PLC中的INC加一指令32767加一后为什么是-32768?
答案:3 悬赏:40 手机版
解决时间 2021-01-10 01:55
- 提问者网友:树红树绿
- 2021-01-09 13:08
PLC中的INC加一指令32767加一后为什么是-32768?
最佳答案
- 五星知识达人网友:动情书生
- 2021-01-09 14:44
因为溢出了,超过了最大存储范围追问还是没看懂,能说详细点么,负号不是通常意义上的负号吧?所谓32767是不是8位二进制转成10进制的结果呢?追答先问一下你用INC指令的进行操作的数据区是字节还是字?追问
我认为应该是字吧,图片中是帮助文件,但是没看懂
追答是这样,不管是16位还是32位,它的最高位如果是0,代表正数,如果是1代表负数,以16位为例,32767,转成十六进制是7FFF,7的二进制是0111,这时候如果给32767加1,那么最高位就变成1了,也就是1000,所以结果是负数的32768追问最高位仅表示正负吗,还以16位为例,32767转成二进制就是 :0111 1111 1111 1111,加一变成了1000 0000 0000 0000,转成10进制就是-32768了,也不对啊,如果最高位仅表示正负号,那转成10进制就是0了啊。0*2的14次方+0*2的13次方+...+0*2的0次方=0,除非最高位1也要参加计算结果才能是-32768啊追答翻了一下以前的课本,复习了一下有符号数的表示,1000 0000 0000 0000,还真的是表示-32768,好像是跟补码有关。不好意思,学的不扎实了。建议楼主也查阅一下有符号数的表示方法。而这里INC指令貌似是有符号和无符号都可以加吧。
我认为应该是字吧,图片中是帮助文件,但是没看懂
追答是这样,不管是16位还是32位,它的最高位如果是0,代表正数,如果是1代表负数,以16位为例,32767,转成十六进制是7FFF,7的二进制是0111,这时候如果给32767加1,那么最高位就变成1了,也就是1000,所以结果是负数的32768追问最高位仅表示正负吗,还以16位为例,32767转成二进制就是 :0111 1111 1111 1111,加一变成了1000 0000 0000 0000,转成10进制就是-32768了,也不对啊,如果最高位仅表示正负号,那转成10进制就是0了啊。0*2的14次方+0*2的13次方+...+0*2的0次方=0,除非最高位1也要参加计算结果才能是-32768啊追答翻了一下以前的课本,复习了一下有符号数的表示,1000 0000 0000 0000,还真的是表示-32768,好像是跟补码有关。不好意思,学的不扎实了。建议楼主也查阅一下有符号数的表示方法。而这里INC指令貌似是有符号和无符号都可以加吧。
全部回答
- 1楼网友:轻熟杀无赦
- 2021-01-09 17:04
回家看书32767=0
- 2楼网友:纵马山川剑自提
- 2021-01-09 15:26
酌折旧投 uishix705
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯