对C中数字的值和数字的范围感到困惑
Confused about the value of a number and the range of the number in C
我错过了我的讲座,我不明白最后两点。有人可以解释第三点并告诉我如何计算第四点吗?谢谢
The value of a number is the sum of the values of the bit positions
containing 1.
如果将一个数从二进制转换为十进制,则必须继续将位值乘以 2^(位置值 - 1) //[假设位置值从最右边的 1 开始]并求和该值与以这种方式获得的先前值。
因此,如果该位为 0,则无论位的位置如何,结果都必须为 0。因此,它不会为数字增加任何值。只有具有 1 的位才计入该值。
What range of numbers can be represented in an unsigned integer type
with : 4 bits, 8 bits, 16 bits, 32 bits, n bits?
对于n bits
的无符号整数,表示的整数可以是0到(2^n)-1。
So, 4 bits can represent numbers from 0 to (2^4) - 1 = 15.
8 bits can represent numbers from 0 to (2^8) - 1 = 255.
16 bits can represent numbers from 0 to (2^16) - 1 = 65,535.
32 bits can represent numbers from 0 to (2^32) - 1 = 4,294,967,295.
以此类推
第3点:参考上面的table,二进制值00010001
代表十进制16 + 1 = 17
.
第4点:n
位的无符号二进制数可以表示范围0
到2**n - 1
,意思是(2的n次方)-1。
再参考table,所有位都设置的4位二进制数表示8 + 4 + 2 + 1 = 15
,也就是2**4 - 1
。
我错过了我的讲座,我不明白最后两点。有人可以解释第三点并告诉我如何计算第四点吗?谢谢
The value of a number is the sum of the values of the bit positions containing 1.
如果将一个数从二进制转换为十进制,则必须继续将位值乘以 2^(位置值 - 1) //[假设位置值从最右边的 1 开始]并求和该值与以这种方式获得的先前值。
因此,如果该位为 0,则无论位的位置如何,结果都必须为 0。因此,它不会为数字增加任何值。只有具有 1 的位才计入该值。
What range of numbers can be represented in an unsigned integer type with : 4 bits, 8 bits, 16 bits, 32 bits, n bits?
对于n bits
的无符号整数,表示的整数可以是0到(2^n)-1。
So, 4 bits can represent numbers from 0 to (2^4) - 1 = 15.
8 bits can represent numbers from 0 to (2^8) - 1 = 255.
16 bits can represent numbers from 0 to (2^16) - 1 = 65,535.
32 bits can represent numbers from 0 to (2^32) - 1 = 4,294,967,295.
以此类推
第3点:参考上面的table,二进制值00010001
代表十进制16 + 1 = 17
.
第4点:n
位的无符号二进制数可以表示范围0
到2**n - 1
,意思是(2的n次方)-1。
再参考table,所有位都设置的4位二进制数表示8 + 4 + 2 + 1 = 15
,也就是2**4 - 1
。