看板java
标 题Re: [问题] Java真的没有unsigned primitive type吗
发信站中大资工二进位的世界 (Wed Jul 18 22:43:08 2007)
转信站ptt!ctu-reader!ctu-gate!news.nctu!news.ncu!news.csie.ncu!BinaryBBS
※ 引述《[email protected] (godfat 真常)》之铭言:
: ※ 引述《H45 (!H45)》之铭言:
: : 虽然你说得很有道理,确实应该使用最小的记忆体空间来做到相同的事情
: : 但是这和 unsigned 有什麽关系?
: : 我记得 unsigned 并没办法得到较小的记忆体空间
: : 能否请教如何使用 unsigned 来得到较小的记忆体空间呢?
: @@
: 范围变大一倍,怎麽不会省记忆体?
: 假设你需要 0~255, 没有 unsigned, 就不能只用 1 byte 去存了
: 原本 unsigned int 可以做到的事,变成要用 long
: 或是要自己试着模拟出 unsigned? 那也未免太麻烦了
: 有些需要大量使用的东西,能省记忆体还是省点好,因为一次就差一倍
: 各种奇怪的 hack 就别拿出来讨论了,很麻烦,能直接支援的还是直接支援好
: 记得 unsigned 在 java 开发初期备受讨论,最後还是拿掉了
: 上次看到有个谈 java 开发历史写的,出处忘了
: 不过有时候我也会觉得,反正都用 java 了,就别太计较了 :o
: 要计较还是用 C/C++ 比较容易
经过上面两篇的解释,我想我已经知道自己的盲点在哪里了。
本来我一直以为 unsigned int 和普通的 int 存的东西一模一样
只是最後 scale 的时候一个调到 0 以上,另一个则调到 -XXX ~ YYY 之间
但是这样完全忘了另一个重要的元素:运算子
unsigned int 的运算子和 int 的运算子实作上不太一样
举例而言,乘法和除法在这两者的运算是完全不同的
而加法和减法则没有影响。
在此感谢各位先进为我解惑。
--
〒作者:H45 来自:60-248-127-91.HINET-IP.hinet.net
◎二进位的世界【140.115.50.50‧bbs.ncu.cc】