int a = 200,300,强制转换成byte会是多少?
前言
在学习原码、反码、补码后,加深一下基本数据类型强转的理解!
目录
前言
解释200:
解释300:
先看ide运行结果:
package com.lwk.project1;/*** @ClassName: Test3* @CreateDate: 2023/2/12*/
public class Test3 {public static void main(String[] args) {int a = 200;byte b = (byte) a;System.out.println("b = " + b);int a1 = 300;byte b1 = (byte) a1;System.out.println("b1 = " + b1);}
}
结果:
b = -56
b1 = 44
解释200:
int占4个字节,32个bit位。
int a = 200;//二进制:0000 0000 0000 0000 0000 0000 1100 1000
byte占1个字节,8个bit位,强转的话就要去掉前面24位,得到后面8位也就是:
byte b = (byte)a;// 1100 1000
那在计算机中二进制1100 1000是不是十进制-56的呢?看下面
打开电脑计算器的左上角【三】选择程序员如下图:
可以看到结果是-56。
图1 图2 图3
注意:图2中的2有几个选项:QWORD(8个字节)、DWORD(4个字节)、WORD(2个字节)、BYTE(1个字节),这里计算选择BYTE
那是怎么计算的呢?
大家都知道一个字节的情况下,第一位代表符号位。1表示是负数,真正的数值是后面的七位。在计算机中数字的运算和存储都以补码的形式存在的,所以就要计算出200的补码。
首先:
十进制200 原码 1100 1000 【200除2取余倒排法】
反码 1011 0111 【符号位保持不变,其余位取反】
补码 1011 1000 【在其反码的基础上+1】
128 |
64 |
32 | 16 | 8 | 4 | 2 | 1 |
0 | 1 | 1 | 1 | 0 | 0 | 0 |
将第二行位1的对应的第一行的数字相加:32+16+8 = 56;因为是负数所以结果为:-56
不清楚的可以查看之前的文章: (5条消息) 十进制怎样转二进制?_觉醒的walker丶的博客-CSDN博客
解释300:
int a = 300;//二进制:0000 0000 0000 0000 0000 0001 0010 1100
byte占1个字节,8个bit位,强转的话就要去掉前面24位,得到后面8位也就是:
byte b = (byte)a;// 0010 1100
因为第一位是0表示是正数,所以正数的反码和补码是自己本身。
原码 0010 1100
反码 0010 1100
补码 0010 1100
128 |
64 |
32 | 16 | 8 | 4 | 2 | 1 |
0 | 1 | 0 | 1 | 1 | 0 | 0 |
将第二行位1的对应的第一行的数字相加:32+8+4 = 44;因为是正数所以结果为:44
最后
今天的分享就到这里了,希望可以帮助到你!
int a = 200,300,强制转换成byte会是多少?相关推荐
- c语言char数字转int补位,关于char强制转换成int到底是用0还是用1补位的猜想与检验...
关于char强制转换成int到底是用0还是用1补位的猜想与检验 最近学C语言发现char强制转换时值会完全不同,而且变化很大,于是决定写代码测试一下. 先检验一下char型的-3和3在内存中分别怎么表 ...
- python 强制转换成字符_Python笔记(三)
来源网络 「往期回顾」 Python笔记(一) Python笔记(二) 「本期内容」 1.用户输入与while循环 2.函数 3.模块 哈喽,各位小伙伴们,大家上午好!话说,你们知道今天是什么日子么? ...
- 打印不同对象的字节表示 ( 对int*强制转换成unsigned char*的理解 )
此文章参考<深入理解计算机系统>P31. 先看如下代码: 12345的十六进制表示为:0x00003039 1 #include <stdio.h> 2 3 int main ...
- java float强制转换int类型_float型怎样强制转换成int型
展开全部 运行时所有数据都存储在内存中,32313133353236313431303231363533e4b893e5b19e31333436316236所以相同很正常,float转int会将小数后 ...
- Java中将inputstream输入流转换成byte[]字节数组
Java中将inputstream输入流转换成byte[]字节数组 Java中的I/O机制都是基于数据流进行输入和输出的,将流转换成字节数组保存下来是数据流传输必不可少的一部分.转换的代码如下(在具体 ...
- C语言Socket编程为什么要将sockaddr_in强制转换成sockaddr?
在阅读尹圣雨<TCP/IP网络编程>(C语言示例)的时候,看到将sockaddr_in类型的struct的指针强制转换成了sockaddr类型的指针. 比如hello_client.c: ...
- java文件转换成byte数组以及byte数组上传到文件
文件转换成byte数组 /*** 文件 File file = new File("...");* @param filePath* @return*/public static ...
- 【C#每日一贴】ArrayList 转换成byte数组
2019独角兽企业重金招聘Python工程师标准>>> // C# ArrayList 转换成byte数组 ArrayList al = new ArrayList(); byte[ ...
- java object 转byte_Java将对象Object转换成Byte字节数组
Java将对象Object转换成Byte字节数组的代码如下: /** * @from www.ityuan.com * @Description: Java将对象Object转换成Byte字节数组 * ...
最新文章
- 打破认知:程序设计 #x3D; 算法 + 数据结构?
- PHP常用正则:手机 邮箱 网址
- 【期望】期望分数(金牌导航 期望-4)
- 【Linux进程、线程、任务调度】四多核下负载均衡 中断负载均衡,RPS软中断负载均衡 cgroups与CPU资源分群分配 Linux为什么不是硬实时 preempt-rt对Linux实时性的改造
- 新安装数据库sqlserver2008r2,使用javaweb连接不上问题处理
- 视图与表之间的异同点_灯芯绒面料印花与染色的异同点有哪些?做灯芯绒订单的了解一下...
- Win10 Ubuntu子系统(内嵌ubuntu18.04)运行32bit Linux原生程序 解决Exec format error错误
- 适用于Mac的WinX HD视频转换器:视频转换教程
- 贝叶斯公式:通俗的理解
- 基于elasticjob的入门maven项目搭建
- ModuleNotFoundError: No module named ‘keras.api‘解决
- 2021-2027全球与中国锁模激光器市场现状及未来发展趋势
- Scrapy创建项目报错Scrapy – no active project,Unknown command解决办法
- JSchException: Algorithm negotiation fail
- 自动驾驶的疑点重重, 再次印证了科技的「非理性繁荣」
- H3C路由器配置忘记密码恢复
- 春季养生食谱 灵芝孢子粉牛排汤补中益气
- 看一眼就会马上收藏的宝藏设计网站
- DLL简述,很有意思
- 同一片天空共眠,同一个梦想奋斗《大抠车始歌》(1)