负数与二进制换转方法_相关技巧

1、十进制负数转二进制

假设有一个 int 类型的数,值为5,那么,我们知道它在计算机中表示为: (因为java中int 是4个字节,所以高位需要补0,占够32位)
00000000 00000000 00000000 00000101
现在想知道,-5在计算机中如何表示?
在计算机中,负数以原码的补码形式表达。
什么叫补码呢?这得从原码,反码说起。

原码:一个正数,按照绝对值大小转换成的二进制数;一个负数按照绝对值大小转换成的二进制数,然后最高位补1,称为原码。
比如 00000000 00000000 00000000 00000101 是 5的 原码;10000000 00000000 00000000 00000101 是 -5的 原码。  

反码:正数的反码与原码相同,负数的反码为对该数的原码除符号位外各位取反。
取反操作指:原为1,得0;原为0,得1。(1变0; 0变1)
比如:正数00000000 00000000 00000000 00000101 的反码还是 00000000 00000000 00000000 00000101 ;
负数10000000 00000000 00000000 00000101每一位取反(除符号位),得11111111 11111111 11111111 11111010。
称:10000000 00000000 00000000 00000101 和 11111111 11111111 11111111 11111010互为反码。  

补码:正数的补码与原码相同,负数的补码为对该数的原码除符号位外各位取反,然后在最后一位加1.
比如:10000000 00000000 00000000 00000101 的反码是:11111111 11111111 11111111 11111010。
那么,补码为:
11111111 11111111 11111111 11111010 + 1 = 11111111 11111111 11111111 11111011
所以,-5 在计算机中表达为:11111111 11111111 11111111 11111011。转换为十六进制:0xFFFFFFFB。

再举一例,我们来看整数-1在计算机中如何表示。

假设这也是一个int类型,那么:
1、先取-1的原码:10000000 00000000 00000000 00000001
2、得反码: 11111111 11111111 11111111 11111110(除符号位按位取反)
3、得补码: 11111111 11111111 11111111 11111111
可见,-1在计算机里用二进制表达就是全1。16进制为:0xFFFFFF

主要知识点:

①正数的反码和补码都与原码相同。
②而负数的反码为对该数的原码除符号位外各位取反。
③负数的补码为对该数的原码除符号位外各位取反,然后在最后一位加1

下面是书上原文:

①原码表示法规定:用符号位和数值表示带符号数,正数的符号位用“0”表示,负数的符号位用“1”表示,数值部分用二进制形式表示。
②反码表示法规定:正数的反码与原码相同,负数的反码为对该数的原码除符号位外各位取反。
③补码表示法规定:正数的补码与原码相同,负数的补码为对该数的原码除符号位外各位取反,然后在最后一位加1.
④正零和负零的补码相同,[+0]补=[-0]补=0000 0000B。

2、符号位为1的二进制转十进制负数

相信大家已经知道如何个转法了,不过在此还是说明一下。

①除去符号位减1;

②除去符号位,按位取反;结果就是负数的源码;

③源码转成相应的十进制。

PS:对于十进制负数和二进制的换转到此结束,如果有错误或有更好的方法,欢迎讨论。

时间: 2024-09-29 14:35:37

负数与二进制换转方法_相关技巧的相关文章

UTF8编码开发中页面空白问题的解决方法_相关技巧

原因是全部采用utf8编码,包含文件的时候,最后的二进制流中包含了多次UTF8 BOM标记,IE不能正常解析包含多个UTF8 BOM 标记的页面,直接替换成实际显示的回车,这样导致一个空行,而firefox却没有这个问题. 故如果模板采用包含的方法包含多个utf8文件需要用ultraedit保存时另存为功能 选择utf8 无bom格式保存即可. 另外,如果中文页面在html head标记中将title标记放在<meta http-equiv="content-type" cont

浅谈解决360兼容模式浏览器的方法_相关技巧

一.renderer <meta name="renderer" content="webkit|ie-comp|ie-stand"> 为双核浏览器准备的:指定双核浏览器默认以何种方式渲染页面. <meta name="renderer" content="webkit">//默认webkit内核 <meta name="renderer" content="ie-c

网站分站的实现方法_相关技巧

现在一般的行业门户网站为了业务的发展和网络推广,一般都会开通几个地区和子行业的分站(如:主站http://www.jb51.net/,分站1http://pg.jb51.net/,分站2http://wjp.jb51.net/,分站3http://hm.jb51.net/).而对于分站来说一般都是采用子域名实现的.对于规模不大的网站来说,一般都是共用一台服务器和数据库,所有只要将子域名解析到服务器的IP就可以. 下面说说对于共用一台服务器和数据库的主站和分站怎样实现. 方法一:采用URL重写技术

虚拟主机下实现多域名绑定不同的子目录的方法_相关技巧

一.ASP动态页面 第一步:创建转向控制页面 创建网站默认的首页文件(通常为"index.asp"或"default.asp")如下: 复制代码 代码如下: <% select case request.servervariables("http_host") case " www.xxdxft.cn" '域名1 Server.Transfer("/show/index.asp") case &quo

web服务器程序运行出现乱码问题的解决方法_相关技巧

使用php,定义php的默认语言. php.ini中: default_charset = "gb2312" 在网页中输出中文 JAVA在网络传输中使用的编码是"ISO-8859-1",故在输出时需要进行转化,如: String str="中文"; str=new String(str.getBytes("GB2312"),"8859_1"); 但如果在编译程序时,使用的编码是"GB2312&qu

flash 挡住层的解决方法_相关技巧

出现问题: 1. 使用层制作的下拉菜单下正好有FLASH动画,菜单被动画遮挡. 2. 页面中的层浮动广告当经过FLASH动画时,浮动层从动画画穿过,实际显示被遮挡. 解决方法: 按如下任一方法设置设置FLASH对象的属性 <param name="wmode" value="transparent"> FLASH将透明 <param name="wmode" value="Opaque"> FLASH仍

git提交空目录的方法_相关技巧

前言 git和 svn不同,仅仅跟踪文件的变动,不跟踪目录.所以,一个空目录,如果里面没有文件,即便 git add 这个目录,另外在别处 check out 的时候,是没有这个空目录的. 只跟踪文件变化,不跟踪目录,这么设计是有原因的.但这会带来一些小麻烦.有时候,确实需要在代码仓库中保留某个空目录.比如测试时需要用到的空目录.下面来看看如何解决. 其实这里有两种情况: 一.目录是空的 这种情况下只需要在目录下创建.gitkeep文件,然后在项目的.gitignore中设置不忽略.gitkee

Git里多种撤销操作的最佳方法_相关技巧

前言 相信大家都知道任何版本控制系统的一个最有的用特性就是"撤销 (undo)"你的错误操作的能力.在 Git 里,"撤销" 蕴含了不少略有差别的功能.当你进行一次新的提交的时候,Git 会保存你代码库在那个特定时间点的快照:之后,你可以利用 Git 返回到你的项目的一个早期版本. 撤销一个"已公开"的改变 场景: 你已经执行了 git push, 把你的修改发送到了 GitHub,现在你意识到这些 commit 的其中一个是有问题的,你需要撤销

在地址栏里显示logo的实现方法_相关技巧

第一步,准备一个图标制作软件. 首先您必须了解所谓的图标(Icon)是一种特殊的图形文件格式,它是以 .ico 作为扩展名.普通的图像设计软件无法使用这种格式,所以您需要到一个软件下载站点去下载一个图标制作软件.您也可以访问 http://www.favicon.com/ ,这里提供一个免费的在线"收藏夹"图标生成器,如果您 E 文够好的话,在这里您还可以了解到更多的关于"收藏夹"图标的知识. 第二步,确定"收藏夹"图标的规格. "收藏