Int 型数值存储
1. Int 在计算机中占 4 Byte, 共 32 位, 最大正数为 2147483647, 最小负数为 -2147483648
2. 正数存储在计算机中的形式为原码,最大正数的十六进制形式为 0X7FFFFFFF. 第一位为7, 二进制位 0111, 最高位为符号位, 所以正数的最高位为0
3. 负数在计算机的存储形式为补码, 最小负数为0XFFFFFFFF, 第一位是F, 二进制为 1111, 负数的最高位是1
4. 大学时变反加一背的滚瓜烂熟, -x 可以通过 x 的二进制取反加一最高位置 1 获得
5. 溢出. 0X7FFFFFFF + 1 == 0X80000000, 由最大正数变成最小负数
Leetcode StringToInteger
主要考察溢出处理, 我在处理溢出时用了很多的判断语句, 写的甚是不雅
int atoi(const char *str) {
if(!strlen(str)) return ;
bool neg = false;
int cur = ;
int res = , num=; while(str[cur] == ' ')
cur++; if(str[cur]=='-') {
neg = true;
cur++;
}
else if(str[cur]=='+') {
cur++;
}else{} while(isNum(str[cur], num)) {
if( MAXN/ > res) {
res = res * + num;
}else if( MAXN/ == res) {
if(neg) {
if(num >=)
return MINN;
else
res = res * + num;
}else{
if(num>=)
return MAXN;
else
res = res * + num;
}
}else{
if(neg)
return MINN;
else
return MAXN;
}
cur++;
}
if(neg)
return (-)*res;
else
return res;
}
LeetCode SingleNumberII
1. 先假设所求是正数, 将二进制看出正数的原码表示
2. 假如最高位是 1, 说明所求数字实际为负数, 那么我们对 res 减一变反, 得到所求数字的绝对值再乘以 -1 即可
3. 注意, 对二进制进行操作和对十进制操作是等价的, 在这个地方想了很久. 因为变量 res 实际上只是以十进制的形式存下了二进制的数据, 当所求数字为正数时, 万事大吉, res 即为所求. 当所求为负数时, 那么 res 是没有意义的, 只是简单的用十进制形式存了某个二进制的数, 我们对其进行位操作, 减一, 求反. 得到其绝对值都相当于直接对二进制进行操作
4. 细节. 对二进制求反可以直接异或 0X11111111
for(int i = ; i >= ; i --) {
res = res* + (record[i]%);
}
// 负数, 按位取反, 末尾加一的逆过程
if( record[] % ) {
res = (res - )^(0x7FFFFFFF);
res = - * res;
}
Int 型数值存储的更多相关文章
- 将int型数值拆分成4字节
- int型整数的数值范围
假设int型用两个字节表示对于有符号的整数,用补码表示的话,最高位是符号位,后面15位用来表示数据.1.正数,表示的范围为0000 0000 0000 0001-0111 1111 1111 1111 ...
- 将int,bigint整型数值可逆转换字符串
将 Int 和 BigInt 类型数值转换为字符串的可逆方法,可用于缩短网址或记录的ID转换等. 如: 9223372036854775807 => aZl8N0y58M7 class Conv ...
- 求int型正整数在内存中存储时1的个数
题目描述: 输入一个int型的正整数,计算出该int型数据在内存中存储时1的个数. 输入描述: 输入一个整数(int类型) 输出描述: 这个数转换成2进制后,输出1的个数 输入例子: 5 输出例子: ...
- 华为oj之求int型正整数在内存中存储时1的个数
题目: 求int型正整数在内存中存储时1的个数 热度指数:4427 时间限制:1秒 空间限制:32768K 题目描述 输入一个int型的正整数,计算出该int型数据在内存中存储时1的个数. 输入描述: ...
- 牛客网编程练习(华为机试在线训练)-----求int型正整数在内存中存储时1的个数
题目描述 输入一个int型的正整数,计算出该int型数据在内存中存储时1的个数. 输入描述: 输入一个整数(int类型) 输出描述: 这个数转换成2进制后,输出1的个数 示例1 输入 5 输出 2 P ...
- java笔试之求int型正整数在内存中存储时1的个数
输入一个int型的正整数,计算出该int型数据在内存中存储时1的个数. 关键点:n与二进制的1相与:判断最末位是否为1:向右移位. 类似题目是查找输入整数二进制中1的个数. package test; ...
- 求int型正整数在内存中存储时1的个数 && int型的数到底最大是多少?
输入一个int型的正整数(十位数之内!嘞!),计算出该int型数据在内存中存储时1的个数. #include<bits/stdc++.h> using namespace std; int ...
- Docs-.NET-C#-指南-语言参考-关键字-内置类型-值类型:整型数值类型
ylbtech-Docs-.NET-C#-指南-语言参考-关键字-内置类型-值类型:整型数值类型 1.返回顶部 1. 整型数值类型(C# 参考) 2019/10/22 “整型数值类型”是“简单类型”的 ...
随机推荐
- C#深入总结
面向对象编程好处:提高软件可复用性.可扩展性.易维护性.灵活性第一章:理解.NET Framework与C# 1..NET框架由.NET Frmaework和CLR组成: 2.CLR(公共语言运行时) ...
- npm 的指令介绍
npm install <name>安装nodejs的依赖包 例如npm install express 就会默认安装express的最新版本,也可以通过在后面加版本号的方式安装指定版本, ...
- [转]解决 Eclipse项目红感叹号
原文地址:http://www.cnblogs.com/hakuci/archive/2012/01/06/2314143.html 原因:显示红色感叹号是因为jar包的路径不对 解决:在项目上右击B ...
- C#中WebBrowser控件的使用
今天在YouTube上看了一个关于WebBrowser控件用法的小视频,做一下总结. 首先创建一个WinForm程序,拖入一个textbox控件和一个button按钮,然后拖入一个panel控件,如图 ...
- RTX——第14章 信号量
以下内容转载自安富莱电子: http://forum.armfly.com/forum.php 本章节开始讲解 RTX 的另一个重要的任务间的同步和资源共享机制,信号量. 信号量有3种用途: 1) 表 ...
- 纯css3实现的超炫checkbox复选框和radio单选框
之前为大家分享了好多css3实现的按钮.今天要为大家分享的是纯css3实现的checkbox复选框和radio单选框,效果超级炫.先让我们看看图吧! 在线预览 源码下载 这个实例完全由css3实现 ...
- pdo_mysql安装
如果编译时没有编译pdo模块,可以cd 到php编译时的目录,重新编译 1.切换到pdo_mysql目录,如php-5.5.10/ext/pdo_mysql/ 2.生成configure文件,在pdo ...
- 【Android实战】----从Retrofit源代码分析到Java网络编程以及HTTP权威指南想到的
一.简单介绍 接上一篇[Android实战]----基于Retrofit实现多图片/文件.图文上传中曾说非常想搞明确为什么Retrofit那么屌. 近期也看了一些其源代码分析的文章以及亲自查看了源代码 ...
- win10无法访问局域网共享文件?(因微软账户和本地账户登陆问题导致)
1 笔记本系统win10 X64企业版,其中一文件夹已设置为“共享”.本地帐号登录系统. 2 平板电脑系统win8.1 X64专业版,可以顺畅的访问笔记本的共享文件.微软帐号登录系统. 3 平板电脑系 ...
- Wordpress搭建社交型小游戏网站10大步骤
http://www.aliyun.com/zixun/content/2_8_196141.html ———————————————————————————————————————————————— ...