补码中有正负零吗?当然没有!每个数字都是唯一表示的啦
2018-02-01 12:04
531 查看
在一本书上看到的小思考啦。
就是说0000 0000 0000 0000 0000 0000 0000 0000是int的0.
那么1000 0000 0000 0000 0000 0000 0000 0000是什么呢?
第一位是符号位啦,那么这个岂不是-0.
错!哪有这样读负数的,读法都错了。
事实上他是一个负数喽。而且是最大的负数。
为什么呢?
那么首先想想负数是怎么求的呢?
原码按位取反加一,对吧!
这个数符号位为1,为负数。
我们来倒退回原码就好了。
减一
0111 1111 1111 1111 1111 1111 1111 1111
取反
1000 0000 0000 0000 0000 0000 0000 0000
这个就是它的正数的大小喽,但是让计算机读的话这个还是负数嘞。
他的相反数还是它本身,但它不是0,神奇吧。
所以在使用的时候要很小心不要越界嘞,否则会出现各种各样的错误喽。
#include<iostream>
using namespace std;
int getbit(int n,int i)
{
return (n>>i)&1;
}
int main()
{
int n;
n=0x80000000;
n--;
n=~n;
n=-n;
for(int i=31;i>=0;i--)
{
cout<<getbit(n,i);
if(i%4==0)cout<<" ";
}
cout<<endl;
cout<<n<<endl;
return 0;
}
就是说0000 0000 0000 0000 0000 0000 0000 0000是int的0.
那么1000 0000 0000 0000 0000 0000 0000 0000是什么呢?
第一位是符号位啦,那么这个岂不是-0.
错!哪有这样读负数的,读法都错了。
事实上他是一个负数喽。而且是最大的负数。
为什么呢?
那么首先想想负数是怎么求的呢?
原码按位取反加一,对吧!
这个数符号位为1,为负数。
我们来倒退回原码就好了。
减一
0111 1111 1111 1111 1111 1111 1111 1111
取反
1000 0000 0000 0000 0000 0000 0000 0000
这个就是它的正数的大小喽,但是让计算机读的话这个还是负数嘞。
他的相反数还是它本身,但它不是0,神奇吧。
所以在使用的时候要很小心不要越界嘞,否则会出现各种各样的错误喽。
#include<iostream>
using namespace std;
int getbit(int n,int i)
{
return (n>>i)&1;
}
int main()
{
int n;
n=0x80000000;
n--;
n=~n;
n=-n;
for(int i=31;i>=0;i--)
{
cout<<getbit(n,i);
if(i%4==0)cout<<" ";
}
cout<<endl;
cout<<n<<endl;
return 0;
}
相关文章推荐
- 小明买了一些彩色的气球用绳子串在一条线上,想要装饰房间,每个气球都染上了一种颜色,每个气球的形状都是各不相同的。我们用1到9一共9个数字表示不同的颜色,如12345则表示一串5个颜色各不相同的气球串。但小明希望得到不出现重复颜色的气球串,那么现在小明需要将这个气球串剪成多个较短的气球串,小明一共有多少种剪法?如原气球串12345的一种是剪法是剪成12和345两个气球串。
- Linux系统中,有两个文件file1和file2,每个文件的每一行都是#UUID,其中的每一UUID表示一个号。要找出在file1中有而在file2中没有的UUID,使用cat,sort,uniq三个命令如何实现
- 给出两个表示两个非负整数的非空链表。数字以相反的顺序存储,它们的每个节点都包含一个数字。添加两个数字,并将其作为链接列表返回。
- 今天开始学Java 现在有一棵合法的二叉树,树的节点都是用数字表示,现在给定这棵树上所有的父子关系,求这棵树的高度
- 属性名前两个字母要么都是大写的要么都是小写的(当然数字与_、$算小写)
- int abs(int number)函数有感: 求补码和通过补码求对应的整数 C++(增加:数字的二进制表示中1的个数)
- 连续数的公倍数 为什么1小时有60分钟,而不是100分钟呢?这是历史上的习惯导致。事实上,它是1至6的每个数字的倍数。即1,2,3,4,5,6都是可以除尽60。
- 小易喜欢的单词具有以下特性: 1.单词每个字母都是大写字母 2.单词没有连续相等的字母 3.单词没有形如“xyxy”(这里的x,y指的都是字母,并且可以相同)这样的子序列,子序列可能不连续。 例如: 小易不喜欢"ABBA",因为这里有两个连续的'B' 小易不喜欢"THETXH",因为这里包含子序列"THTH" 小易不喜欢"ABACADA",因为这里包含子序列"AAAA" 小易喜欢"
- 计算机是以补码表示数字的
- 关于计算机数字表示原理的研究(原码,反码,补码)
- 地址格式转换 Excel是最常用的办公软件。每个单元格都有唯一的地址表示。
- 计算机中如何表示数字-03补码
- DSP28016每个内存地址对应的都是16位(2字节),没有8位的整数
- 给定候选号码(C)和目标号码(T)的集合,找出C中候选号码总和为T的所有唯一组合 C中的每个数字只能在组合中使用一次。
- 给定一个长度为N的数组,其中每个元素的取值范围都是1到N。判断数组中是否有重复的数字。(原数组不必保留)
- c++现在有一棵合法的二叉树,树的节点都是用数字表示,现在给定这棵树上所有的父子关系,求这棵树的高度
- 设正整数n的十进制表示为n=ak……a1a0(0<=ai<=9,0<=i<=k,ak!=0),n的个位为起始数字的数字的正负交错之和T(n)=a0+a1+……+(-1)kak,证明:11|n的充分必要条件是11|T(n);(整除理论1.1.2))
- 将自然数1--9这九个数分成三组,将每组的三个数字拼成三位数,每个数字不能重复,且每个三位数都是完全平方数。请找出这样的三个三位数。
- 无线通信数字表示及数的原码、反码、补码
- 数字在计算机中的表示(原码、反码、补码)个人备忘