博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
负数的二进制表示
阅读量:5081 次
发布时间:2019-06-13

本文共 727 字,大约阅读时间需要 2 分钟。

在二进制中,用最高位来表示整数和负数。

比如 

System.out.println(Integer.toBinaryString(1));        System.out.println(Integer.toBinaryString(-1));

会输出

整数前面的0被省略了。

或者这样

public void test(){        System.out.println(Integer.toBinaryString(Integer.MAX_VALUE));        System.out.println(Integer.toBinaryString(-1));    }

输出

显而易见,最大值前面省略了一个0。

应该是

01111111111111111111111111111111

这也解释了我一直以来的困惑。

所以,最高位如果是0则表示正数,如果为1则表示为负数。

 

在计算机中,负数以其正值的补码形式表达

比如

System.out.println(Integer.toBinaryString(33));        System.out.println(Integer.toBinaryString(-33));

输出

我们取后八位,好显示

00100001(33)

11011111(-33)

正数变为负数的过程为1.取反,2.加1

①取反

00100001 取反为

11011110

②加1

11011110加1后为

11011111

所以-33的二进制表示为

11011111

 

表达的什么玩意啊。。。

参见:

 

转载于:https://www.cnblogs.com/Iqiaoxun/p/5575542.html

你可能感兴趣的文章
[转]使用 Razor 进行递归操作
查看>>
[转]Android xxx is not translated in yyy, zzz 的解决方法
查看>>
docker入门
查看>>
Android系统--输入系统(十一)Reader线程_简单处理
查看>>
监督学习模型分类 生成模型vs判别模型 概率模型vs非概率模型 参数模型vs非参数模型...
查看>>
Mobiscroll脚本破解,去除Trial和注册时间限制【转】
查看>>
实验五 Java网络编程及安全
查看>>
32位与64位 兼容编程
查看>>
iframe父子页面通信
查看>>
ambari 大数据安装利器
查看>>
java 上传图片压缩图片
查看>>
magento 自定义订单前缀或订单起始编号
查看>>
ACM_拼接数字
查看>>
计算机基础作业1
查看>>
Ubuntu 深度炼丹环境配置
查看>>
C#中集合ArrayList与Hashtable的使用
查看>>
从一个标准 url 里取出文件的扩展名
查看>>
map基本用法
查看>>
poj-1163 动态规划
查看>>
Golang之interface(多态,类型断言)
查看>>