三沣开发知识 购物 网址 游戏 小说 歌词 地图 快照 股票 美女 新闻 笑话 | 汉字 软件 日历 阅读 下载 图书馆 开发 租车 短信 China
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
多播视频美女直播
↓电视,电影,美女直播,迅雷资源↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
vbs/VBScript DOS/BAT hta htc python perl 游戏相关 VBA 远程脚本 ColdFusion ruby专题
autoit seraphzone PowerShell linux shell Lua Golang Erlang 其它教程 CSS/HTML/Xhtml
html5 CSS XML/XSLT Dreamweaver教程 经验交流 开发者乐园 Android开发资料
站长资讯 .NET新手 ASP.NET C# WinForm Silverlight WCF CLR WPF XNA VisualStudio ASP.NET-MVC .NET控件开发 EntityFramework WinRT-Metro Java C++ PHP Delphi Python Ruby C语言 Erlang Go Swift Scala R语言 Verilog 其它语言 架构设计 面向对象 设计模式 领域驱动 Html-Css JavaScript jQuery HTML5 SharePoint GIS技术 SAP OracleERP DynamicsCRM K2 BPM 信息安全 企业信息 Android开发 iOS开发 WindowsPhone WindowsMobile 其他手机 敏捷开发 项目管理 软件工程 SQLServer Oracle MySQL NoSQL 其它数据库 Windows7 WindowsServer Linux
  IT知识库 -> Java -> 关于源码,反码,补码(正数 -> 正文阅读
 

[Java]关于源码,反码,补码(正数

关于源码,反码,补码(正数 以一个字节为例
1、无符号位,一个字节可以存放0~255共256个数字;有符号位存放-128~127共256个数字;
2、无符号全都表示为正数;有符号位则首位表示正负数,正数首位为0,负数首位为1(因此在判断一个数为正还是负时会先看首位,如果为正直接算,如果为负还要经过求反码、源码)
以下以默认的有符号位示例
3、首先,要知道计算机中正数用源码表示,负数用其正数的补码表示;补码为源码的反码加一(如-1即为1的反码加一表示)
  1:0000 0001
   -1:1111 1111
  从1到-1的计算过程:0000 0001  取反码为  1111 1110
             1111 1110   +1为补码  1111 1111
  因此-1表示为 1111 1111
4、如果给你一个负数,要求你用二进制表示;
  第一:先判断这个负数是否溢出(不管正负都要判断),如果溢出就不能表示,如果要强制转换就会造成数据不一致,那么原始数据就会丢失;
     如果不溢出,就下一步;
  第二:先用二进制表示出其对应的绝对值(正数)的二进制源码;
  第三:根据源码求反码,源码取反(~源码);
  第四:根据反码求补码表示负数,反码+1;
5、如果给你一个负数的二进制,求该二进制表示的负数为几;
  第一:先求补码,该负数的二进制-1;
  第二:根据补码求源码,补码取反(~补码);
  第三:将源码算出代表几;
关于牛客网题目的理解(正确答案为 B)

前言:不管什么都是按照上诉4、5计算;
比如4,当正数溢出时,他还是会把源码先(扩容后:如原本只装1个字节,但是装不下就扩用2个字节表示)表示出来,然后从低位截取再判断正负再进行计算; 当负数溢出时,他还是会将源码表示出来,然后根据规则算出补码,最后截取后存储。由于截取后数值就变啦,因此所表示的就不是原来的数了,至于表示几自己根据规则再算回去,有时甚至会变为正数就是这个原因;
因此这道题我是这么做的:
因为a为short类型,一共16位,表示128为:0000 0000 1000 0000
b为byte类型,一共8位,将a强制转换后为:1000 0000
为什么1000 0000表示-128呢,我自己的理解是:
首先首位为1,则表示为负数 ,负数用补码表示,所以1000 0000为补码 补码-1为反码,即0111 1111 反码取反,为1000 0000 1000 0000表示的的正值为27=128(这样既符合正负数表示方法,数学数值上也说得通,包括16位的10000000 00000000表示-32768等等也是这个道理);所以1000 0000表示-128
总结:因此我认为通过负数二进制求其表示的数时,最后得出源码后,应该是求源码表示的正值;而1000 0000在byte中比较特别,因为它的补码与源码相同,所以最后得出源码时会比较懵逼,但如果记住这时该求正值就行了;以后自己按照这个计算方法计算便可以,方便好记
  Java 最新文章
初入山门,需记门规
java 操作本地数据库 mysql
spring boot 整合 mybatis
单表(SSM、SpringBoot、SpringCloud、Free
Mybatis框架中Mapper动态代理方式
IDEA报错:Error starting ApplicationCont
多订单多支付方式分配金额问题
从源码来理解slf4j的绑定,以及logback对配
ThreadLocal的使用及介绍
java基础知识(一)
上一篇文章      下一篇文章      查看所有文章
加:2017-10-14 23:22:46  更:2017-10-14 23:25:06 
 
技术频道: 站长资讯 .NET新手区 ASP.NET C# WinForm Silverlight WCF CLR WPF XNA Visual Studio ASP.NET MVC .NET控件开发 Entity Framework WinRT/Metro Java C++ PHP Delphi Python Ruby C语言 Erlang Go Swift Scala R语言 Verilog 其它语言 架构设计 面向对象 设计模式 领域驱动设计 Html/Css JavaScript jQuery HTML5 SharePoint GIS技术 SAP Oracle ERP Dynamics CRM K2 BPM 信息安全 企业信息化其他 Android开发 iOS开发 Windows Phone Windows Mobile 其他手机开发 敏捷开发 项目与团队管理 软件工程其他 SQL Server Oracle MySQL NoSQL 其它数据库 Windows 7 Windows Server Linux
脚本语言: vbs/VBScript DOS/BAT hta htc python perl 游戏相关 VBA 远程脚本 ColdFusion ruby专题 autoit seraphzone PowerShell linux shell Lua Golang Erlang 其它教程
网站开发: CSS/HTML/Xhtml html5 CSS XML/XSLT Dreamweaver教程 经验交流 开发者乐园 Android开发资料
360图书馆 软件开发资料 文字转语音 购物精选 软件下载 美食菜谱 新闻资讯 电影视频 小游戏 Chinese Culture 股票 租车
生肖星座 三丰软件 视频 开发 短信 中国文化 网文精选 搜图网 美图 阅读网 多播 租车 短信 看图 日历 万年历 2017年12日历
2017-12-14 6:45:22
多播视频美女直播
↓电视,电影,美女直播,迅雷资源↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT知识库