社区
C++ 语言
帖子详情
无符号数相减
txgc1009
2012-05-13 01:52:42
请教:
typedef unsigned short int Uint16;
Uint16 a=10;
Uint16 b=20;
那么Uint16 c= a-b得到65526,why,why?
short int d=a-b得到-10,so why??
请各位不吝赐教
...全文
691
7
打赏
收藏
无符号数相减
请教: typedef unsigned short int Uint16; Uint16 a=10; Uint16 b=20; 那么Uint16 c= a-b得到65526,why,why? short int d=a-b得到-10,so why?? 请各位不吝赐教
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
7 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
txgc1009
2012-05-13
打赏
举报
回复
懂了,感谢DAsama和zm19870528,以后又问题继续发问。
screwzm
2012-05-13
打赏
举报
回复
[Quote=引用 3 楼 的回复:]
DAsama,你这么一解释,我理解65526的由来;
但是-10如何来?
困惑:
11111111 1110110转换成short int的有符号数,为什么是-10,请再一次详解
[/Quote]
-10的补码:
1、取绝对值,得10,即0000 0000 0000 1010
2、取反,~0000 0000 0000 1010,得1111 1111 1111 0101
3、加1,1111 1111 1111 0101 + 1 = 1111 1111 1111 0110
即-10在内存里就是以1111 1111 1111 0110存储的,只不过看你怎么去读取而已。
DAsama
2012-05-13
打赏
举报
回复
lz你。。。。,要学会举一反三:
short int d=a-b;你申明了d是short型的,是有符号数对吧,所以
是有一位符号位的a-b结果虽然是11111111 1110110,但是此时符号位是1,表示为负数,所以为-10。
unituniverse2
2012-05-13
打赏
举报
回复
short int a = (short int)65526;
a当然是-10了
txgc1009
2012-05-13
打赏
举报
回复
DAsama,你这么一解释,我理解65526的由来;
但是-10如何来?
困惑:
11111111 1110110转换成short int的有符号数,为什么是-10,请再一次详解
screwzm
2012-05-13
打赏
举报
回复
数字在内存里存储的都是以补码形式存储的!
正数的补码就是本身,负数的补码是其绝对值取反再加1.
理解完这个你应该就知道为什么了
DAsama
2012-05-13
打赏
举报
回复
无符号数Uint16为16位2进制,
a=10,2进制表示为:00000000 00001010 ;
b=20,2进制表示为:00000000 00010100 ;
相减得 :11111111 1110110换成10进制就为65526。
而short型为16位有符号数,还有一个符号位,做加减的话就是和10进制直接加减答案相同。
单片机中
无符号
数
运算容易出现的问题
我们所用的单片机很有可能是16位或者8位的,这样,编程时所用的一些变量的取值范围会对我们的 运算有所限制.比如说8位的单片机
无符号
数
最大值为255,有符号最大
数
为127;16位单片机
无符号
数
最大值为65535,有符号
数
最大值为32767.对于32的单片机来说,因为我们一般所处理的值很少能超过有符号
数
的最大取值,所以比较少遇到下面出现的问题.
Verilog
无符号
数
和有符号
数
的运算
Verilog
无符号
数
和有符号
数
的运算
从外部输入4个
无符号
数
,将前两个
数
相加,和存入内存30H单元;后两个
数
相减
,差存入内存31H单元。并将两个结果分别输出。
从外部输入4个
无符号
数
,将前两个
数
相加,和存入内存30H单元;后两个
数
相减
,差存入内存31H单元。并将两个结果分别输出。
吉林大学微机原理与接口技术算
数
运算实验Dosbox第一次实验报告
这是吉林大学的微机课第一次实验报告,题目大概如下: 1. 两个
无符号
数
相加,将结果
数
存入指定地址单元。被加
数
,加
数
及和存放 地址及
数
据如下: 地址
数
据 被加
数
2000:0000 9FH 2000:0001 6BH 加
数
2000:0002 5CH 2000:0003 42H 和 2000:0004 ~ 2000:0006 2. 两个
无符号
数
相减
,将差存入指定地址单元。被减
数
,减
数
及差的存放地 址及
数
据如下: 地址
数
据 被减
数
2000:0100 8C 2000:0101 42 减
数
2000:0102 92 2000:0103 5A 差 2000:0104 2000:0105 3. 两个
无符号
数
相乘,将积存入指定地址单元。被乘
数
,乘
数
及积存放的地 址及
数
据如下: 地址
数
据 被乘
数
2000:1000 56 2000:1001 2C 乘
数
2000:1002 3A ...... 资料为完整实验报告,请放心下载
计算机组成原理课设.rar
从外部输入4个
无符号
数
,将前两个
数
相减
,后两个
数
相加,再将两个结果进行与操作。
C++ 语言
64,662
社区成员
250,488
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章