计算机是使用补码形式存储在硬盘的,那计算机在运算时,比如进行加法运算,也是先将数字都转成补码再运算的吗?
3条回答 默认 最新
- 林地宁宁 2022-07-21 21:50关注
结论上而言,对于有符号的整数,确实都是使用补码运算的。至于“转成补码再运算”成补码这个说法,可能不太准确,应该说你代码里面的有符号整数常量,在编译成代码时,就已经提前将有符号整数常量转成补码形式,不需要在运算前一刻再转成补码;其他地方传过来的有符号整数,也是提前就转为补码形式的,不需要再转换。
只有当遇到类型不匹配的时候,编译器或者解释器才会将数字转为对应类型,而这个运行时的类型转换,可能不一定会转为补码,也可能会转为无符号数运算,甚至有可能转为浮点数运算,而这取决于程序本身了。
BTW,现代处理器指令集中,大多都会对不同的数据类型有不同的指令,补码运算的好处就是,其和原码运算的操作一样,因此可以和原码运算共用一套计算体系。从这样看来,补码和原码其实没有太多区别,只是取决于你“怎么看待它”。此外,浮点数有自己的格式规范,所以会有另一套专供浮点数运算的指令。
解决 无用评论 打赏 举报
悬赏问题
- ¥15 x264库中预测模式字IPM、运动向量差MVD、量化后的DCT系数的位置
- ¥15 curl 命令调用正常,程序调用报 java.net.ConnectException: connection refused
- ¥20 关于web前端如何播放二次加密m3u8视频的问题
- ¥15 使用百度地图api 位置函数报错?
- ¥15 metamask如何添加TRON自定义网络
- ¥66 关于川崎机器人调速问题
- ¥15 winFrom界面无法打开
- ¥30 crossover21 ARM64版本安装软件问题
- ¥15 mymetaobjecthandler没有进入
- ¥15 mmo能不能做客户端怪物