从INT_MAX和INT_MIN看补码

刷一道题的时候遇到INT_MAX和INT_MIN的问题,有些东西忘了,梳理一下。

INT_MAX为2147483647,INT_MIN为-2147483648,为什么MIN的绝对值比MAX多1呢,因为计算机中采用的是补码,INT_MAX和INT_MIN是32位整数的最大和最小值,

而表示正数的时候最高一位相当于符号位(并不是真正意义是符号位,只不过在由正转负的时候需要多出一位来辨别正负,这一位按规则变成了1,与反码不同)所以只剩31位,这也就是为啥INT_MAX又写成0x7fffffff,

对于1后面全是0的情况补码定义为-2的n次方,补码求原码就是对补码求补码,所以你看10000000的补码是-128,也就是为什么INT_MIN是-2147483648

补码的转化方式:求负整数的补码,将其对应正数二进制表示所有位取反(包括符号位,0变1,1变0)后加1

补码转化为原码:对该补码再求补码

时间: 2024-11-03 21:04:31

从INT_MAX和INT_MIN看补码的相关文章

9.17 数据类型 常量 补码 阶码

左值和右值: 左值必须要有内存实体,能放在赋值号左边的值 寄存器的数据一般都是右值,能放在赋值号右边的值 int num = 1; num+1  的值不在内存,在寄存器里(CPU里).绝对不能取寄存器地址. #include <stdio.h> int main() { int num = 3; int data = 0; _asm { mov eax, num //num移动到eax add eax, 4 mov data, eax } printf("%d", data

C json实战引擎 二 , 实现构造部分

引言 这篇博文和前一篇 C json实战引擎一,实现解析部分设计是相同的,都是采用递归下降分析. 这里扯一点 假如你是学生 推荐一本书 给 大家 自制编程语言 http://baike.baidu.com/link?url=jIFOBNt26ykhnPr2-UaaDc5_I7gZURXdJ15P2iBXwbglXkdz2qT_tqAz4KoFF0rsS2IQbIP-ij2Ar5EMRzMcuq 当然学了上面内容,以后对编译链接设计方面会有很大提高. 但是对于 其它 也没有什么鸟用. 再扯一点 如

整型数的溢出

#include <stdio.h> #include <limits.h> int main() { printf("INT_MAX+1=%d\n",INT_MAX+1); printf("INT_MAX+INT_MAX=%d\n",INT_MAX+INT_MAX); printf("INT_MIN=%d\n",INT_MIN); printf("INT_MIN-1=%d\n",INT_MIN-1);

cJSON_hacking

1 /****************************************************************************** 2 * cJSON_hacking 3 * 4 * 1.这是cJSON中cJSON.c(主程序)的源码,源码不到1000行(除注释). 5 * 2.本文仅仅注释了源码中JSON解析部分,对链表的操作没有进行任何注释,通过 6 * 分析阅读该源码,可以一窥双向链表,字符串处理,里面几个地方使用到了递归, 7 * 而且用得很精妙,但在理解

leetcode(7): Reverse Integer 源码实现 runtime: 8ms

题目 :Reverse Integer Reverse digits of an integer. Example1: x = 123, return 321Example2: x = -123, return -321 题目分析及部分代码解析: 1.需要考虑一位数,比如1,2,3等特殊情况,返回本身. 2.需要考虑0,返回0. 3.需要考虑如123000,45600等末尾有若干零的情况,正确结果应为321.654,不应该出现000321,00654等情况. 4.需要4字节int类型数据的取值范

LeetCode #Reverse Number#

刚背了单词,然后做个题玩玩-挑个软柿子踩踩-哈哈 很简单的思路.不过好玩的是我忘记检查处理完的数据是否符合整形数据返回了.因而好一会儿不能AC. 感谢 @Fantasy. 很快的指出我没有检查返回数据的范围. 先给出我超丑陋的解(python), 而后给出其他高手给出的很优雅的解!!也是用python 最后会给出利用java和C/C++的解. """ Programmer : EOF Date : 2015.03.31 File : reverse_interger.py &

leetcode第八题--String to Integer (atoi)

Problem: Implement atoi to convert a string to an integer. Hint: Carefully consider all possible input cases. If you want a challenge, please do not see below and ask yourself what are the possible input cases. Notes: It is intended for this problem

每日算法之八:String to Integer (atoi) 及溢出分析

Implement atoi to convert a string to an integer.  Hint: Carefully consider all possible input cases. If you want a challenge, please do not see below and ask yourself what are the possible input cases.Notes: It is intended for this problem to be spe

[LeetCode]41. String to Integer(atoi)字符串转整数

Implement atoi to convert a string to an integer. Hint: Carefully consider all possible input cases. If you want a challenge, please do not see below and ask yourself what are the possible input cases. Notes: It is intended for this problem to be spe