前言

在学习原码、反码、补码后,加深一下基本数据类型强转的理解!

目录

前言

解释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会是多少?相关推荐

  1. c语言char数字转int补位,关于char强制转换成int到底是用0还是用1补位的猜想与检验...

    关于char强制转换成int到底是用0还是用1补位的猜想与检验 最近学C语言发现char强制转换时值会完全不同,而且变化很大,于是决定写代码测试一下. 先检验一下char型的-3和3在内存中分别怎么表 ...

  2. python 强制转换成字符_Python笔记(三)

    来源网络 「往期回顾」 Python笔记(一) Python笔记(二) 「本期内容」 1.用户输入与while循环 2.函数 3.模块 哈喽,各位小伙伴们,大家上午好!话说,你们知道今天是什么日子么? ...

  3. 打印不同对象的字节表示 ( 对int*强制转换成unsigned char*的理解 )

    此文章参考<深入理解计算机系统>P31. 先看如下代码:  12345的十六进制表示为:0x00003039 1 #include <stdio.h> 2 3 int main ...

  4. java float强制转换int类型_float型怎样强制转换成int型

    展开全部 运行时所有数据都存储在内存中,32313133353236313431303231363533e4b893e5b19e31333436316236所以相同很正常,float转int会将小数后 ...

  5. Java中将inputstream输入流转换成byte[]字节数组

    Java中将inputstream输入流转换成byte[]字节数组 Java中的I/O机制都是基于数据流进行输入和输出的,将流转换成字节数组保存下来是数据流传输必不可少的一部分.转换的代码如下(在具体 ...

  6. C语言Socket编程为什么要将sockaddr_in强制转换成sockaddr?

    在阅读尹圣雨<TCP/IP网络编程>(C语言示例)的时候,看到将sockaddr_in类型的struct的指针强制转换成了sockaddr类型的指针. 比如hello_client.c: ...

  7. java文件转换成byte数组以及byte数组上传到文件

    文件转换成byte数组 /*** 文件 File file = new File("...");* @param filePath* @return*/public static ...

  8. 【C#每日一贴】ArrayList 转换成byte数组

    2019独角兽企业重金招聘Python工程师标准>>> // C# ArrayList 转换成byte数组 ArrayList al = new ArrayList(); byte[ ...

  9. java object 转byte_Java将对象Object转换成Byte字节数组

    Java将对象Object转换成Byte字节数组的代码如下: /** * @from www.ityuan.com * @Description: Java将对象Object转换成Byte字节数组 * ...

最新文章

  1. 打破认知:程序设计 #x3D; 算法 + 数据结构?
  2. PHP常用正则:手机 邮箱 网址
  3. 【期望】期望分数(金牌导航 期望-4)
  4. 【Linux进程、线程、任务调度】四多核下负载均衡 中断负载均衡,RPS软中断负载均衡 cgroups与CPU资源分群分配 Linux为什么不是硬实时 preempt-rt对Linux实时性的改造
  5. 新安装数据库sqlserver2008r2,使用javaweb连接不上问题处理
  6. 视图与表之间的异同点_灯芯绒面料印花与染色的异同点有哪些?做灯芯绒订单的了解一下...
  7. Win10 Ubuntu子系统(内嵌ubuntu18.04)运行32bit Linux原生程序 解决Exec format error错误
  8. 适用于Mac的WinX HD视频转换器:视频转换教程
  9. 贝叶斯公式:通俗的理解
  10. 基于elasticjob的入门maven项目搭建
  11. ModuleNotFoundError: No module named ‘keras.api‘解决
  12. 2021-2027全球与中国锁模激光器市场现状及未来发展趋势
  13. Scrapy创建项目报错Scrapy – no active project,Unknown command解决办法
  14. JSchException: Algorithm negotiation fail
  15. 自动驾驶的疑点重重, 再次印证了科技的「非理性繁荣」
  16. H3C路由器配置忘记密码恢复
  17. 春季养生食谱 灵芝孢子粉牛排汤补中益气
  18. 看一眼就会马上收藏的宝藏设计网站
  19. DLL简述,很有意思
  20. 同一片天空共眠,同一个梦想奋斗《大抠车始歌》(1)

热门文章

  1. Windows 技术篇-本地组策略编辑器添加模板方法,设置chrome浏览器本地组策略演示
  2. 前端table表格的用法
  3. sql语句中查重复数据
  4. centos7安装Python3(无脑教程)
  5. IATF16949认证-汽车零部件行业的准入门槛
  6. android 字体间间隔,TextView设置行间距、字体间距
  7. VR+5G+人工智能=互联网新时代
  8. 机器人开发相关参考文档
  9. fastadmin 宝塔免费防火墙拦截图片选择
  10. HTB-Horizontall