java的类型转换问题。int a = 123456;short b = (short)a;System.out.println(b);为什么结果是-7616?
2024-08-29 07:34:00
这个从二进制来解释: int 是 32 位,也就是最多能表示长度为 32 位的二进制整数。第一位是符号位,表示正负,0 表示正的,1 表示负的。当首位为 1(为负)时,把所有的位取反(0 变成 1,1 变成 0),然后再 + 1,就是它的正数相反数。 short 是 16 位,长度短了,其他和 int 一样的。 然后看你的问题,123456 本来是 int,有 32 位,二进制表示为:0000 0000 0000 0001 1110 0010 0100 0000。 然后你转成了 short,short 最大 16 位,截取最后 16 位,就是 1110 0010 0100 0000,这个数肯定不是原来那个数了,首位是 1,那么就是负数,取反加一以后是 0001 1101 1100 0000,这转成十进制就是 7616,这是相反数,所以是 -7616。 看明白了吗?不明白问我。
最新文章
- 01-C#入门(函数一)
- java web 开发 购物车功能的实现
- 剑指Offer 旋转数组的最小数字
- STM32F0xx_TIM输入捕获(计算频率)配置详细过程
- Hibernate exercise 54
- [讲座]【项目收集】“清流资本”互联网金融沙龙——颠覆者的创新与机会
- Stackdump: 一个可以离线看stackoverflow的工具
- windows下载安装requests
- sql server 数据库创建链接服务器访问另外一个sql server 数据库
- C#生成随机验证吗例子
- iOS 给UITextView加一个placeholder
- php+xdebug+dbgp远程调试(多人)
- 导入项目 idea
- 【webpack系列】从零搭建 webpack4+react 脚手架(三)
- OneNote中添加代码问题
- 关于 telegram中 callback_data <;= 64bytes 的解决方法
- Java GC机制中Minor GC/Full GC
- 01bootstrap_基本结构和布局
- 巧克力分配问题——C语言
- css设置input不显示光标