short 和 ushort 的疑问。

SoulRed 2019-04-28 01:01:20

short.MaxValue=32767
ushort.MaxValue=65535

但是32767*2 不等于65535

有大佬知道为什么吗?
...全文
2715 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
大鱼> 2019-04-30
  • 打赏
  • 举报
回复
二进制看来你没有好好学
  • 打赏
  • 举报
回复
少年你发现了四大天王一共有五个的真相,他们都是从0开始数的!!!
exception92 2019-04-30
  • 打赏
  • 举报
回复
知道带符号与不带符号的二进制表示的区别就行了。
threenewbee 2019-04-29
  • 打赏
  • 举报
回复
有什么问题么
2的n次方-1
2的n+1次方-1
两者不是2倍关系
jx315425246 2019-04-29
  • 打赏
  • 举报
回复
2进制的表示, 这是个16位数据,分为带符号数(正数负数),不带符号数(正数),在(国外的)计算中最高位为1表示为负数,正数最高位为0,理解了吗?
wanghui0380 2019-04-28
  • 打赏
  • 举报
回复
0啊,0不能算2遍,对不
正怒月神 2019-04-28
  • 打赏
  • 举报
回复
short: -32,768 到 32,767 ushort: 0 到 65,535
Acme_Thanatos 2019-04-28
  • 打赏
  • 举报
回复
0.0 short => -32767 ~ 32767 ushort => 0 ~ 65535 了解一下类型值的上下限是哪来的 short 两个字节 16位 有符号 => -(2^15-1 )到 2^15 -1 ushort 两个字节 16位 无符号 0~ 2^16-1 不是说short*2 =ushort ,问题本身就存在【问题】
X-i-n 2019-04-28
  • 打赏
  • 举报
回复
没明白为什么一定要short.MaxValue * 2 = ushort.MaxValue。 short和ushort区别在于有无正负号。刨掉一位符号位,最大就是32767。如果数总的个数,一个范围是-32768 ~ 32767,一个范围是0 ~ 65535。都是65536个数字(2个字节16位,2^16)。
love氟利昂 2019-04-28
  • 打赏
  • 举报
回复
32767+2^15,不是你这么算的,1111 1111 1111 1111和0111 1111 1111 1111。
  • 打赏
  • 举报
回复
32768*2=65536

110,536

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧