为什么C语言中int的表示范围是 |
您所在的位置:网站首页 › 32769的二进制是多少 › 为什么C语言中int的表示范围是 |
为什么C语言中int的表示范围是-32768~32767
做而论道_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 (二进制)。 这不就求出来了吗? 哪还用琢磨什么:符号位原码取反。。。! 还要啥自行车啊! 谁要是跟老外学算术, 立刻、马上、直接,就掉坑里去了! 为什么C语言中int的表示范围是-32768~32767这可怎么办!!: 那不变的话,符号位的1去哪了呀 为什么C语言中int的表示范围是-32768~32767那片星河为你: 可以! 为什么C语言中int的表示范围是-32768~32767
Casey996:
终于看到个讲的明白的了 Charlie_CCC: 符号位不取反兄弟。 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |