首页 > 编程语言 > 详细

原码,反码,补码在c语言java中的表示的区别.

时间:2020-06-20 18:20:53      阅读:92      评论:0      收藏:0      [点我收藏+]

首先要区分有符号数和无符号数.  c语言中区分有符号数和无符号数,java中只有有符号数.不存在无符号的情况.
 
一: 无符号数的二进制就是无符号数编码.只有这一种编码
如果是n位的无符号数. 二进制转十进制无符号数的方式是把每位的二进制相加(深入理解计算机系统44页)
 
二: 有符号数的编码通常有补码,原码,反码.
      ①: 补码最常见. Java中只有补码表示. 如果是n位的补码.最左位的权是 负的2的(n-1)次方.  深入理解计算机45页
      ②: 反码. 最左边位的权是 负的2的(n-1)次方再减1. 所以表示的数字少了一个
      ③: 原码. 最左边位只表示符号位,不参与计算.这点跟补码的区别注意区分. 
       总结: 反码,原码中的0都有两种表示. 如反码中的11111111就是0,在补码中表示-1.   原码中的10000000也表示0. 所以他们都少表示一个数.
       有符号数在几乎所有现代机器上都是用补码表示.浮点数中有使用原码编码. 

原码,反码,补码在c语言java中的表示的区别.

原文:https://www.cnblogs.com/wangzhaosheng/p/13169745.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!