三码——原码、反码、补码
百度词条:
计算机中的有符号数有三种表示方法,即原码、反码和补码。三种表示方法均有符号位和数值位两部分,符号位都是用0表示“正”,用1表示“负”,而数值位,三种表示方法各不相同 [1] 。在计算机系统中,数值一律用补码来表示和存储。原因在于,使用补码,可以将符号位和数值域统一处理;同时,加法和减法也可以统一处理 [2] 。
原码:
符号位0表示正数,符号位1表示负数
正数原码 = 0 + 正数绝对值
负数原码 = 1 + 负数绝对值
反码:
正数的反码不变,负数原码符号位的1不变,绝对值部分按位取反
补码:
正数的补码等于原码,负数的补码等于负数的反码加1
例如:
+20的原码:00010100
+20的反码:00010100
-20的原码:10010100
-20的反码:11101011
补码:
正数补码 = 正数反码 = 正数原码
负数补码 = 负数反码符号位的1不变,绝对值部分+1
例如:
+20原码:00010100
+20反码:00010100
+20补码:00010100
-20原码:10010100
-20反码:11101011
-20补码:11101100
计算机在执行有负数参与的计算时,就必须用补码。原因是计算机内部只有加法器,没有减法器,换言之,计算机只能进行加法运算,不能进行减法运算,所以,在计算减法运算时,需要通过转换成加上“减数相反数”的形式进行运算,因此计算机中引入了补码运算。
具体计算:
取一个数字的补码表示数:
1.
if (num > 0)
x = num;
else
x = pow(2, 32) + num;
2.
另一个计算法为:
unsigned int x=num;
直接一句转化。
学习博客在这里。
【Over】
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!
· 零经验选手,Compose 一天开发一款小游戏!