先看一个问题:i + 1 < i 成立吗?答案是肯定的。下面我们用代码来证明:
@Test
public void test(){
int i = Integer.MAX_VALUE;
System.err.println("i="+i+",i+1="+(i+1)+" result:"+((i+1)<i));
}
输出结果如下:
i=2147483647,i+1=-2147483648 result:true
为什么会这样呢?
这是因为整数在内存中使用的是补码的形式表示,最高位是符号位,0表示正数,1表示负数:
例如一个8位的整数
正数的补码为:这个正数的二进制码,例如5:0000 0101
负数的补码为:这个负数的绝对值的二进制码,取反加1,例如-5:1111 1011。过程如下:
1.取绝对值:5
2.取二进制码:0000 0101
3.二进制码取反:1111 1010
4. 加1:1111 1011
反之,通过这个数的补码也能得到这个数,这里就不再赘述。
然后我们来看看整型最大值+1的问题。上面代码用的是int类型,同理byte类型也一样:
byte b = 127;
b = (byte) (b + 1);
最后b的值是多少?分析:
首先普及一下:一个字节用8个占位符,int为4个字节,所以是32位。byte则为8位。
127的二进制为: 0111 1111
127+1则为:0111 1111 + 1 = 1000 0000
计算1000 0000的值(与上面取补码的反向步骤)
1.减1:0111 1111
2.二进制码取反:1000 0000
3.二进制转十进制:128
4.符号位判定正负:-128
由以上分析,同理可推 i - 1 > i 成立,在此不再赘述。
原文永久地址:
http://jsonliangyoujun.iteye.com/blog/2356997
分享到:
相关推荐
根据给定的信息,我们可以分析并总结出以下与“找出一个整型数组中的元素的最大值”相关的知识点: ### 1. C++程序结构 在提供的代码片段中,虽然标记为C语言,但实际上使用的是C++语法。这段代码展示了如何在C++...
正确的输出应该是“最大值为{0}, 位置为{1}”。 ### 总结 通过上述过程,我们学习了如何在C#中创建数组,并编写代码来找出数组中的最大值及其位置。这种方法简单有效,适用于处理各种类型的数组。此外,还可以对这...
在这个问题中,我们关注的是一个特定的int数组{1, 3, 5, -2, 4, 6},我们需要计算这个数组中的最大值、最小值、元素和以及平均值。这些都是数据分析和算法基础中的关键概念。 1. **最大值**:数组中的最大值是指...
1. **初始化最大值**:在遍历数组之前,需要先设定一个初始最大值,通常是数组的最小可能值(例如,对于整数,是INT_MIN)。 2. **遍历数组**:使用for循环,从数组的第一个元素开始,逐个检查每个元素。循环的结构...
在C语言中,找出数组中的最大值和最小值是一项常见的任务,这有助于理解和掌握基本的循环、条件判断以及数组操作。下面将详细解释这个程序的工作原理及其涉及的关键知识点。 首先,程序通过`#include<stdio.h>`引入...
在计算机编程中,经常需要处理数值运算问题,例如找出一组数据中的最大值以及计算这些数值的平均值。这些基本操作是理解和应用算法的重要步骤之一。本篇文章将详细介绍如何通过C语言编写一个简单的程序来实现这一...
本文将详细介绍一个原创的C语言算法实现,该算法能够有效地找到数组中的最大值及其索引,并通过理解这个过程来帮助读者掌握算法思想,从而能够灵活运用到其他类似问题上。 #### 算法描述 本算法的目标是在给定的...
从键盘任意输入10个整数,用指针变量作函数参数编程计算最大值和最小值,并返回它们所在数组中的位置。
在处理数组时,经常会遇到需要找到数组中的最大值和最小值的问题。这通常用于统计分析、排序算法或其他数学计算中。这个程序的目标就是实现这个功能。 首先,我们需要了解C语言数组的基本概念。数组是由相同类型...
### 找出最大值 #### 知识点分析与详解 在给定的代码片段中,作者使用Java语言实现了一个简单程序,目的是在一个指定的3行4列的二维数组(实际上形成的是一个3×4矩阵而非3×3矩阵)中找到最大的元素值,并将其...
java代码-使用java计算NxN整型数组中最大值(假定唯一)所在行的和与最大值所在列的和的源代码 ——学习参考资料:仅用于个人学习使用!
1. 初始化最大值和最小值均为第一个输入的数`a`。 2. 使用`for`循环四次,每次循环: - 输入一个新的数`b`。 - 如果`b`大于当前的最大值,则更新最大值为`b`。 - 如果`b`小于当前的最小值,则更新最小值为`b`。 3...
本篇文章将深入探讨如何在C#中判断数组的最大值、最小值以及计算平均值。 首先,我们需要理解一维数组的基本概念。一维数组可以被视为一系列相同类型的数据元素的有序集合,可以通过索引来访问每个元素。例如,定义...
很基础的一维 数组操作,初学者可以看一下,毕竟也是我初学的时候编的
例如,如果一个无符号整型变量占用4个字节(32位),那么它可以表示的最大值为2^32 - 1,即4,294,967,295。 示例代码: ```cpp unsigned int a = 4294967295u; cout ; // 输出结果:4294967295 ``` #### 1.2 有...
创建名为var1、var2、var3的三个整型(int)变量,以及两个额外的变量result和result2,它们将分别用于存储最大值和最小值。 4. 连接变量和指令。将DB块中的var1、var2、var3拖放到MAX指令的输入管脚上,将result拖...
在C#编程中,处理一组数字的统计计算是常见的任务,比如找出一组数据中的最大值、最小值、平均值和总和。在这个场景下,我们可以创建一个简单的控制台应用程序来实现这个功能。以下是一个详细解释如何用C#完成这个...
本程序设计的目标是让用户输入10个数值,存储在数组中,接着找出并显示数组中的最大值和最小值,同时显示它们对应的下标。这个练习有助于理解C++中的数组操作、循环结构以及条件判断。 首先,我们需要定义一个足够...
测试用例的设计应覆盖各种边界条件,如最小值1、最大值(取决于整型限制)、偶数、奇数以及一些已知的循环序列。 学习这个例子,你可以深入理解C语言中的递归概念,以及如何编写和测试递归函数。同时,这也是探索...
二维数组的“最大点”定义为:某个数式所在行的最大值,并且是所在列的最大值。某行或某列上可能有多个“最大点” 样例输入: 3 4 8 60 7 100 10 498 12 49 -71 132 4 85 样例输出 100 1 4 498 2 2