知方号

知方号

Java 12 switch表达式新特性(

关于-32768补码的问题

做而论道_CS: 所谓的:机器数符号位原码反码 ...都是计算机专家在【忽悠、卖拐】而已。正负数值,存入计算机,都是以 “补码” 存放的。计算机中,根本就没有原码和反码。除非,你自寻烦恼,偏要在计算机中,存入原码和反码。既然没有原码反码,那么,取反加一,计算机也就不能做了。其实,所谓的 “补码”,也是正常的数字。也并非一定是二进制数。你看十进制吧,两位数:0 ~ 99。可以有:27 + 99 = (一百) 26也可以:27 - 1 = 26如果你忽略进位,依旧保持两位数,这两种算法的功能,就是相同的!就是说,当你舍弃了进位:负数,就能用正数代替;加法,竟然就能实现减法运算!在计算机中,舍弃进位,会怎样?就可以简化硬件。用一个加法器,便可横行天下!由此可知,“补码”,根本就不是什么新鲜事。它并不是:符号位原码反码取反加一。其关键,是:【舍弃进位】。上过小学的,都懂这个!------------用两位十进制运算时,舍弃进位,就是【减去一百】。那么,加 99,再减 100,当然就是 “-1” 了。计算机使用二进制数。八位二进制数是:0000 0000 ~ 1111 1111。相当于十进制数:0 ~ 255。如果出现 “进位 = 1”,就是:2^8 = 256。那么,加 255,再减 256,这也就是 “-1” 了。所以:+255 (1111 1111),就是:-1;同理:+254 (1111 1110),就是:-2;+253 (1111 1101),就是:-3;。。。。。。+128 (1000 0000),即:-128。以上这些正数,就是计算机专家 “发明” 的补码了。你肯定能看出关系式:负数的补码 = 256 + 该负数。一般化,就是:负数的补码 = 2^n + 该负数。n,是二进制数的位数。例:求-31 的 “补码” 是多少?解:256-31 = 225 = 1110 0001 (二进制)。这不就求出来了吗?哪还用琢磨什么:符号位原码取反。。。!这还要啥自行车啊!谁要是跟老外学算术,立刻、马上、直接,就掉坑里去了!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至lizi9903@foxmail.com举报,一经查实,本站将立刻删除。