问 0x7FFFFFFF+0x7FFFFFFF 是多少
今天做面试题 问 0x7FFFFFFF+0x7FFFFFFF 是多少 一时没想明白,回家补了一下,记录下来
int a,ba=b=0x7FFFFFFF
Console.WriteLine(a+b)
原来
一个F就是4个bit,两个FF就是一个字节(byte)
0x7F 对应 sbyte.MaxValue 即 127 7对应比特为0111,F对应比特为1111,所以0x7F=0111 1111
0xFF 对应 byte.MaxValue 即 255
0x7FFF 对应 short.MaxValue 即 32767
0xFFFF 对应 ushort.MaxValue 即 65535
0x7FFFFFFF 对应 int.MaxValue 即 2147483647
0xFFFFFFFF 对应 uint.MaxValue 即 4294967295
注意C#里 byte类型范围是 0-255 sbyte类型有符号位 -128~127
这个是计算机里的基础,
答案是 -2
为什么呢
都是最大值直接用sbyte.MaxValue 来说
0111 1111
+ 0111 1111
= 1111 1110
符号位溢出了
取反
1000 0001
再加1
1000 0010
结果就得-2
这只是示意
C#里sbyte+sbyte是没问题的 因为 + operator 默认是int类型实现的 int才会溢出
也发现C# a=int.MaxValue,b=int.MaxValue a+b 默认就是-2 也是就是默认是unchecked()的
直接用 int.MaxValue+int.MaxValue 编绎器过不了 unchecked()(int.MaxValue+int.MaxValue)这样就好了
一个byte 8个bit
0111 1111 有符号sbyte类型最高位bit用来标记是正还是负 0正 1负
所以真正能存数的只有7个bit 那它的大小是 2^0+2^1+2^2.....2^6=127
负数最大值是 1000 0000 先-1 即 0111 1111 再取反 1000 0000 转成2进制 2^7=128 其它位的0
符号为1时 这里有个操作叫 补码
补码 0与正数不变 当符号位是1是 除最高位其它7个bit先取反(反码)再加1
比如 0-1
默认先补码 0000 0001先反转1111 1110 再加1即 1111 1111
计算机再算的时候成了 0+(-1) 直接算
参考:byte的范围为何是-128到127
参考: 补码
参考: 补码2
参考: java中为什么byte的取值范围是-128到+127
问 0x7FFFFFFF+0x7FFFFFFF 是多少相关推荐
- C/C++无穷大的表示 0x7fffffff + 0x7fffffff= 负数
C/C++中无穷大的表示 一.为什么用0x3f3f3f3f(十进制:1061109567)表示无穷大 1.C/C++中int型的最大值是2^31-1,十进制:2147483647.16进制:0x7ff ...
- 为什么0x7FFFFFFF+0x7FFFFFFF=-2
在学习过程中碰到这个问题,所以记下来. 0x7fffffff 是16进制数,转化为2进制数为:(7=> 0111 f=>1111) 0111 1111 1111 1111 1111 111 ...
- c++ 无穷大0x7FFFFFFF+0x7FFFFFFF 是多少
答案是 -2 为什么呢 这里涉及到有符号整型数的补码,正数的补码与原码相同.负数的补码,将其原码除符号位外的所有位取反后加1 0111 1111 + 0111 1111 = 1111 1110 符号位 ...
- 0x7FFFFFFF+0x7FFFFFFF 是多少
运行之后发现: 0x7FFFFFFF 对应 int.MaxValue 即 2147483647 0xFFFFFFFF 对应 uint.MaxValue 即 4294967295 0x7FFF 对应 s ...
- 嘿嘿,我就知道面试官接下来要问我 ConcurrentHashMap 底层原理了,看我怎么秀他...
来自:烟雨星空 前言 上篇文章介绍了 HashMap 源码后,在博客平台广受好评,让本来己经不打算更新这个系列的我,仿佛被打了一顿鸡血.真的,被读者认可的感觉,就是这么奇妙. 原文:面试官再问你 Ha ...
- 面试题整理 1:将一个字符串转换为整数
题目:输入一个表示整数的字符串,把该字符串转换成整数并输出. 分析:这道题尽管不是很难,学过C/C++语言一般都能实现基本功能,但不同程序员就这道题写出的代码有很大区别,可以说这道题能够很好地反应出程 ...
- 【原理】Basic Integer Overflows
Basic Integer Overflows 创建时间:2002-12-31 文章属性:转载 文章提交: xundi (xundi_at_xfocus.org) Volume 0x0b, Issue ...
- “睡服”面试官系列第九篇之数值的扩展(建议收藏学习)
目录 1. 二进制和八进制表示法 2. Number.isFinite(), Number.isNaN() 3. Number.parseInt(), Number.parseFloat() 4. N ...
- Math 对象的扩展
Math 对象的扩展 ES6 在 Math 对象上新增了 17 个与数学相关的方法.所有这些方法都是静态方法,只能在 Math 对象上调用. Math.trunc() Math.trunc()方法用于 ...
最新文章
- 简单module_深入理解JavaScript之全面解析Module模式
- Android app集成Google Map方法
- mysql 基础视图_MySQL基础(4) | 视图
- U盘专杀工具,U盘防御软件,U盘病毒防火墙--UDiskSyS
- 用计算机MR,计算机上的【MC、MR、M
- SQL Server MDS(主数据服务)介绍
- es 测试数据进行 增删查改
- 3D视觉(一)三维数学基础教程和SLAM
- 济南 天然气 暖气 物业费 水费 电费价格
- python创建空文本文件_Python空白txt文件创建
- INTELLIJ IDEA 2017 破解教程(2018也可以!)
- SmartUpload文件上传
- scrapy中文文档基础知识
- 华为3Com总裁郑树生:我们最终要自立门户
- Caché库诡异慢问题跟踪
- linux系统python3环境下安装pymysql模块
- 【论文阅读】Blur Calibration for Depth from Defocus
- android 4.2目录结构,关于android的4.2的0文件夹的详解(目录结构挂载分析)
- 真爱如血第七季/全集True Blood迅雷下载
- 实验二 数据类型、运算符与表达式→ 张玉生《C语言程序设计实训教程》双色版 配套实验书答案 (纯手打, 仅供参考)