社区
C语言
帖子详情
20取反是-21 ?为什么?
LovenDreams
2005-03-19 03:31:55
如题
...全文
897
9
打赏
收藏
20取反是-21 ?为什么?
如题
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
9 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
long_xing
2005-03-19
打赏
举报
回复
没有什么好说的,能到这里来的应该不是计算机基础没有学好,而是不爱动脑筋。
我们通常用的计算机中的数据是以补码的形式存储的,这一点大家都懂。
而补码的规则是,正数编码和原码相同,负数的编码是原码取反加1这一点大家肯定也都懂,可为什么不自己计算一下就问啊~!
要学会独立思考问题啊~!!
style1984
2005-03-19
打赏
举报
回复
是的
正数的原码=反码=补码
而负数的原码最高为1
负数的反码为原码除符号位外各位求反
负数的补码是反玛加1
shine51151
2005-03-19
打赏
举报
回复
其实还有个口诀可以帮你快速地由负数的补码看出负数的原码:
“两头不变中间变”
如:
20原码 0000 0000 0001 0100
取反 1111 1111 1110 1011 (这是某个负数的补码表示,要求它的原码)
两头不变指 1111 1111 1110 1011 的首位1和末位1不变,中间变指首位之间的各位按位取反
这样得到 1000 0000 0001 0101 首位为符号,所以这个原码值为 -21.
shine51151
2005-03-19
打赏
举报
回复
楼上的已经讲得挺详细了,我只给楼主你补充介绍一下:
正数的数值是以补码表示的:
补码和原码相同;
负数的补码:将该数的绝对值的二进制形式按位取反再加1。
例如:
求-10的补码:
10的原码:
0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0
取反:
1 1 1 1 1 1 1 1 1 1 1 1 0 1 0 1
再加1,得-10的补码:
1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 0
由此可知,左面的第一位是表示符号的。
这样你就会明白了为什么“负值绝对值为原码要减1再取反”,只是逆向考虑一下而已。
gcyds2001
2005-03-19
打赏
举报
回复
正数的反码还是原码或补码嘛。程序员教程上说的。楼主说的是相反数吧?
makoa
2005-03-19
打赏
举报
回复
20原码 0000 0000 0001 0100
取反 1111 1111 1110 1011
最高位为1所以为负值
负值绝对值为原码要减1再取反
减1为 1111 1111 1110 1010
取反 0000 0000 0001 0101===21
所以结果是-21
changxinchen
2005-03-19
打赏
举报
回复
20用原码0000 0000 0001 0100
反码1111 1111 1110 1000
yuchengliu
2005-03-19
打赏
举报
回复
#include <iostream>
using namespace std;
int main()
{
int na = 20;
cout << -na << endl;
system("pause");
return 0;
}
结果:
-20
请按任意键继续. . .
你是不是用了什么函数???
晨星
2005-03-19
打赏
举报
回复
研究一下补码就明白了。
单片机原理
1.存储器的结构 P9 MCS-51系列,有4个物理上上相互独立的存储器空间,即内程序存储器、外程序存储器和内数据存储器、外数据存储器。 2、位地址和字节地址 P14 MCS-51的位地址空间包括两部分:内部数据存储器RAM中的16个单元(
20
H-2FH)和SFR中的11个特殊功能寄存器。 3、.MCS-51 单片机的RS1,RS0=11 时,当前寄存器R0—R7 占用内部RAM(18H-1FH )单元 P10 4、并行口 (地址、数据) P16 5、原码、反码、补码 正数的原反补码是一样的 例: 1100110011 原码 1011001100 反码,除符号位,按位
取反
1011001101 补码,除符号位,按位
取反
再加1 负数的补码的方法是:将该数的绝对值的二进制形式,按位
取反
再加1。 例:-10的补码:(1)取-10的绝对值10;(2)10的绝对值的二进制形式为1010(3)对1010
取反
得1111111111110101(一个整数占16位)(4)再加1 得。
为什么我不建议你用 if-else ?
点击“开发者技术前线”,选择“星标????”让一部分开发者先看到未来来源:codenong.com/cs106475567为什么我们写的代码都是 if-else?程序员想必都经历过这样的...
Java进制转换和位运算专题
本课程是零基础学JAVA课程的第二阶段的课程,课程内容详实、细致,讲解通俗易懂!内容包括:Java中的进制转换原理,十进制和二进制、八进制、十六进制的互相转换规律,位运算原理,按位与、按位或、按位
取反
、左移、右移、无符号右移的讲解!
java对rgb
取反
_颜色
取反
- kevinzhwl - 博客园
COLORREF crSrc = ....;COLORREF crDst = 0x00ffffff-crSrc;Top2 楼xxhfortrue(红叶)回复于
20
04-07-28 11:25:
21
得分 5同意楼上Top3 楼ShaftWhy(归去来兮)回复于
20
04-07-28 11:29:00 得分 5AgreeAgreeTop4 楼holyeagle(一杯清茶)回...
c语言中
取反
的作用,一位
取反
硬件实现_c语言按位
取反
什么意思
整数
取反
问题的算法实现(C\/C++实现,极简5行代552x190 - 11KB - JPEG基于FPGA的检纠错逻辑算法的实现 - 数字信号599x419 - 40KB - JPEG基于FPGA的检纠错逻辑算法的实现 - 数字信号985x740 - 138KB - JPEG编程实现将累加器A中的低4位清零,高2位置1,其500x346 - 67KB - JPEG么num没有初始值,为什么不是nu...
C语言
69,373
社区成员
243,080
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章