版权声明:转载请注明出处,谢谢! https://blog.csdn.net/dreamstone_xiaoqw/article/details/88079036
上周实验室搬家,小编的工位从二楼搬到了四楼。
按说,换个办公地点开通门禁卡权限是再正常不过的事情,但是,小编却遇到了一个问题。
毕竟是新环境,小编一大早就第一个冲到实验室,拿出门禁卡,“滴滴”……
门没开……
“滴滴”……
门又没开……
卧槽,难道是权限没开通?一阵懵逼后快速找到相关工作人员,说时迟那时快,只见可爱的小姐姐一顿操作猛如虎……系统在重刷我权限时,很礼貌的提示:
【ERROR】
错误原因:当前卡片ID的最后5位数字大于65535(ID>maxLimitID),系统无法正常运行门禁权限模块的功能。
???
万万没想到,竟然在这种场景下重新见识了unsigned int
值不能超过65535
的设定。
在我们最初学习C语言的时候,老师讲:
int & unsigned int
int
类型4
个字节,16bit
(位),所以能表示16
位2
进制数(共2
的16
次方,也就是65536
个值,0000000000000000~1111111111111111
)
int
的第一个字节是符号位,所以int的表示范围是-32768~32767
。
unsigned int
是无符号整型,表示范围是0~65535
。
大于65535的数字运算
既然整数类型最大只能表示65535,那大于65536的值怎么运算呢?
比如小编的门禁卡ID末尾5位,再比如那一年小编存储卡里的存款……或者马爸爸的存款?
这个问题大概想想,也能知道怎么做。小编最先想到的方法是数组封装。
比如,计算123456+123456,只需将123456在计算时变成
unsigned int num_pre["1", "2","3", "4", "5", "6"]
然后做关联运算即可。
当然,还有其他的算法,时间关系小编就不再整理实现。
同时,欢迎朋友们分享其他的方法和实现源码。