大家好,今天小编来为大家解答无符号数是什么意思是什么这个问题,负数补码怎么算啊、里边老有个符号位、符号位是指的哪位啊很多人还不知道,现在让我们一起来看看吧!
一、负数补码怎么算啊、里边老有个符号位、符号位是指的哪位啊
补码的定义:
正数的补码等于正数的原码;
负数的补码为其源码除符号位不动,其余各位变反再加1。
比如,十进制数35和-1在8位机中的补码表示为:
x1=35,x2=-1;
因为x1>0,所以[x1]补=[x1]原=00100011;
因为x2<0,所以[x2]原=10000001;
[x2]补=11111110+1=11111111;
对于机器来说,它记录的只是补码本身:00100011和11111111,也就是说机器并不知道这段补码是有符号数还是无符号数,但是当你使用高级语言编写程序,定义了int或者unsignedint,那么就会根据相应的定义,认为这段机器码的第一位是数值位或者符号位。
其中,64位程序上的C语言整型数据类型的典型取值范围为
int:-2147483648~2147483647
unsignedint:0~4294967295
希望回答对你有帮助。
参考资料:
1.《C语言与程序设计(高等学校规划教材)》曹计昌//卢萍//李开,电子工业出版社
2.《ComputerSystems:AProgrammer'sPerspective(深入理解计算机系统》byRandalBryant
二、用8个二进制位能表示的最大的无符号整数等于十进制整数多少
用8个二进制位能表示的最大的无符号整数等于十进制整数255。
1、8位无符号的二进制数表示为00000000-11111111,即十进制的0-255。
2、二进制是计算技术中广泛采用的一种数制。二进制数据是用0和1两个数码来表示的数。它的基数为2,进位规则是“逢二进一”,借位规则是“借一当二”。
3、二进制转十进制:要从右到左用二进制的每个数去乘以2的相应次方。
二进制的11111111=1*2^7+1*2^6+1*2^5+……1*2^0=128+64+32+16+8+4+2+1=255所以8位无符号的二进制数表示十进制的0-255共256个数。
OK,本文到此结束,希望对大家有所帮助。